Python: use of one logger instance across multiple module












1














As a newbie to python I finally managed to create my own customized logger in a class in an extra module (tools.py). One of the main achievements here is that I can set the name of the logger and with the name also the log file name.



I want to instantiate the logger in main in one module (recalc.py) and from here call a function prepData in another module (getData.py). That function prepData in module getData.py is supposed to use the logger instance I instantiated in recalc.py. prepData is calling other function in the same module that shall use the same logger instance.



I fail to get the grips on how do declare / instantiate the logger since only the in module recalc.py with the main function knows the correct name for the logger.



    module tools.py
:
class Logg():
:


.



    module recalc.py
import tools
from getData import prepData
:
lg = Logg("recalc", ...) # instantiate the logger
:
result = prepData(...)


.



    module getData.py
:
def otherFunc()
lg.debug(...)
:
return X

def prepData(...)
lg.info(...)
:
x = otherFunc(...)
:
return RES


I read a lot about (not really existing) global variables in Python, also Python 3, one class used across multiple modules and others. The config.py solution implies to initiate the global variable in config.py itself. But that doesn't work for me as only the main module knows the logger name.



The workaround I have right now is not acceptable in the long run.
I appreciate any help.










share|improve this question


















  • 1




    You can initiate a nameless logger on config.py and set a name for it in your recalc module.
    – yeg
    Nov 21 '18 at 17:14










  • that's an idea! I'd need a method in class Logg though as the log file needs killing & re-opening under new name then I guess.
    – Joe Phi
    Nov 26 '18 at 15:58


















1














As a newbie to python I finally managed to create my own customized logger in a class in an extra module (tools.py). One of the main achievements here is that I can set the name of the logger and with the name also the log file name.



I want to instantiate the logger in main in one module (recalc.py) and from here call a function prepData in another module (getData.py). That function prepData in module getData.py is supposed to use the logger instance I instantiated in recalc.py. prepData is calling other function in the same module that shall use the same logger instance.



I fail to get the grips on how do declare / instantiate the logger since only the in module recalc.py with the main function knows the correct name for the logger.



    module tools.py
:
class Logg():
:


.



    module recalc.py
import tools
from getData import prepData
:
lg = Logg("recalc", ...) # instantiate the logger
:
result = prepData(...)


.



    module getData.py
:
def otherFunc()
lg.debug(...)
:
return X

def prepData(...)
lg.info(...)
:
x = otherFunc(...)
:
return RES


I read a lot about (not really existing) global variables in Python, also Python 3, one class used across multiple modules and others. The config.py solution implies to initiate the global variable in config.py itself. But that doesn't work for me as only the main module knows the logger name.



The workaround I have right now is not acceptable in the long run.
I appreciate any help.










share|improve this question


















  • 1




    You can initiate a nameless logger on config.py and set a name for it in your recalc module.
    – yeg
    Nov 21 '18 at 17:14










  • that's an idea! I'd need a method in class Logg though as the log file needs killing & re-opening under new name then I guess.
    – Joe Phi
    Nov 26 '18 at 15:58
















1












1








1







As a newbie to python I finally managed to create my own customized logger in a class in an extra module (tools.py). One of the main achievements here is that I can set the name of the logger and with the name also the log file name.



I want to instantiate the logger in main in one module (recalc.py) and from here call a function prepData in another module (getData.py). That function prepData in module getData.py is supposed to use the logger instance I instantiated in recalc.py. prepData is calling other function in the same module that shall use the same logger instance.



I fail to get the grips on how do declare / instantiate the logger since only the in module recalc.py with the main function knows the correct name for the logger.



    module tools.py
:
class Logg():
:


.



    module recalc.py
import tools
from getData import prepData
:
lg = Logg("recalc", ...) # instantiate the logger
:
result = prepData(...)


.



    module getData.py
:
def otherFunc()
lg.debug(...)
:
return X

def prepData(...)
lg.info(...)
:
x = otherFunc(...)
:
return RES


I read a lot about (not really existing) global variables in Python, also Python 3, one class used across multiple modules and others. The config.py solution implies to initiate the global variable in config.py itself. But that doesn't work for me as only the main module knows the logger name.



The workaround I have right now is not acceptable in the long run.
I appreciate any help.










share|improve this question













As a newbie to python I finally managed to create my own customized logger in a class in an extra module (tools.py). One of the main achievements here is that I can set the name of the logger and with the name also the log file name.



I want to instantiate the logger in main in one module (recalc.py) and from here call a function prepData in another module (getData.py). That function prepData in module getData.py is supposed to use the logger instance I instantiated in recalc.py. prepData is calling other function in the same module that shall use the same logger instance.



I fail to get the grips on how do declare / instantiate the logger since only the in module recalc.py with the main function knows the correct name for the logger.



    module tools.py
:
class Logg():
:


.



    module recalc.py
import tools
from getData import prepData
:
lg = Logg("recalc", ...) # instantiate the logger
:
result = prepData(...)


.



    module getData.py
:
def otherFunc()
lg.debug(...)
:
return X

def prepData(...)
lg.info(...)
:
x = otherFunc(...)
:
return RES


I read a lot about (not really existing) global variables in Python, also Python 3, one class used across multiple modules and others. The config.py solution implies to initiate the global variable in config.py itself. But that doesn't work for me as only the main module knows the logger name.



The workaround I have right now is not acceptable in the long run.
I appreciate any help.







python global-variables






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 21 '18 at 16:08









Joe PhiJoe Phi

11011




11011








  • 1




    You can initiate a nameless logger on config.py and set a name for it in your recalc module.
    – yeg
    Nov 21 '18 at 17:14










  • that's an idea! I'd need a method in class Logg though as the log file needs killing & re-opening under new name then I guess.
    – Joe Phi
    Nov 26 '18 at 15:58
















  • 1




    You can initiate a nameless logger on config.py and set a name for it in your recalc module.
    – yeg
    Nov 21 '18 at 17:14










  • that's an idea! I'd need a method in class Logg though as the log file needs killing & re-opening under new name then I guess.
    – Joe Phi
    Nov 26 '18 at 15:58










1




1




You can initiate a nameless logger on config.py and set a name for it in your recalc module.
– yeg
Nov 21 '18 at 17:14




You can initiate a nameless logger on config.py and set a name for it in your recalc module.
– yeg
Nov 21 '18 at 17:14












that's an idea! I'd need a method in class Logg though as the log file needs killing & re-opening under new name then I guess.
– Joe Phi
Nov 26 '18 at 15:58






that's an idea! I'd need a method in class Logg though as the log file needs killing & re-opening under new name then I guess.
– Joe Phi
Nov 26 '18 at 15:58














0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53416114%2fpython-use-of-one-logger-instance-across-multiple-module%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53416114%2fpython-use-of-one-logger-instance-across-multiple-module%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Tonle Sap (See)

I get strange results when I access the Sqlitedatabase with Unity C# via XAMPP

Guatemaltekische Davis-Cup-Mannschaft