Dynamically Change Logging Level of a Python Process
Clash Royale CLAN TAG#URR8PPP
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;
up vote
2
down vote
favorite
The intention of following code is to dynamically change the logging level of a running python process that has imported this module.
#!/usr/bin/python
import logging
import time
import signal
logging.basicConfig(level=logging.ERROR)
logger = logging.getLogger(__name__)
# create logger object with 'ERROR' level logging.
def handler1(signum, frame):
logger.setLevel(logging.DEBUG)
def handler2(signum, frame):
logger.setLevel(logging.INFO)
signal.signal(signal.SIGUSR1, handler1)
# if process receives SIGUSR1 signal, the logging level changes to DEBUG.
signal.signal(signal.SIGUSR2, handler2)
# if process receives SIGUSR1 signal, the logging level changes to INFO.
while True:
logger.info('info logging')
logger.debug('debug logging')
logger.error('error logging')
logger.warn('warn logging')
time.sleep(2)
The above script runs as expected but I am not sure if this the right way to full fill the goal. Please review the code, as well as issues in above resolution.
python logging signal-handling
add a comment |Â
up vote
2
down vote
favorite
The intention of following code is to dynamically change the logging level of a running python process that has imported this module.
#!/usr/bin/python
import logging
import time
import signal
logging.basicConfig(level=logging.ERROR)
logger = logging.getLogger(__name__)
# create logger object with 'ERROR' level logging.
def handler1(signum, frame):
logger.setLevel(logging.DEBUG)
def handler2(signum, frame):
logger.setLevel(logging.INFO)
signal.signal(signal.SIGUSR1, handler1)
# if process receives SIGUSR1 signal, the logging level changes to DEBUG.
signal.signal(signal.SIGUSR2, handler2)
# if process receives SIGUSR1 signal, the logging level changes to INFO.
while True:
logger.info('info logging')
logger.debug('debug logging')
logger.error('error logging')
logger.warn('warn logging')
time.sleep(2)
The above script runs as expected but I am not sure if this the right way to full fill the goal. Please review the code, as well as issues in above resolution.
python logging signal-handling
2
There are problems with the indentation of the code, please fix them. Is there any particular reason why you want to use signals for this?
â Daniel
Jun 9 at 18:04
there is no particular reason of using the signal.
â Abhinav Agarwal
Jun 10 at 4:15
add a comment |Â
up vote
2
down vote
favorite
up vote
2
down vote
favorite
The intention of following code is to dynamically change the logging level of a running python process that has imported this module.
#!/usr/bin/python
import logging
import time
import signal
logging.basicConfig(level=logging.ERROR)
logger = logging.getLogger(__name__)
# create logger object with 'ERROR' level logging.
def handler1(signum, frame):
logger.setLevel(logging.DEBUG)
def handler2(signum, frame):
logger.setLevel(logging.INFO)
signal.signal(signal.SIGUSR1, handler1)
# if process receives SIGUSR1 signal, the logging level changes to DEBUG.
signal.signal(signal.SIGUSR2, handler2)
# if process receives SIGUSR1 signal, the logging level changes to INFO.
while True:
logger.info('info logging')
logger.debug('debug logging')
logger.error('error logging')
logger.warn('warn logging')
time.sleep(2)
The above script runs as expected but I am not sure if this the right way to full fill the goal. Please review the code, as well as issues in above resolution.
python logging signal-handling
The intention of following code is to dynamically change the logging level of a running python process that has imported this module.
#!/usr/bin/python
import logging
import time
import signal
logging.basicConfig(level=logging.ERROR)
logger = logging.getLogger(__name__)
# create logger object with 'ERROR' level logging.
def handler1(signum, frame):
logger.setLevel(logging.DEBUG)
def handler2(signum, frame):
logger.setLevel(logging.INFO)
signal.signal(signal.SIGUSR1, handler1)
# if process receives SIGUSR1 signal, the logging level changes to DEBUG.
signal.signal(signal.SIGUSR2, handler2)
# if process receives SIGUSR1 signal, the logging level changes to INFO.
while True:
logger.info('info logging')
logger.debug('debug logging')
logger.error('error logging')
logger.warn('warn logging')
time.sleep(2)
The above script runs as expected but I am not sure if this the right way to full fill the goal. Please review the code, as well as issues in above resolution.
python logging signal-handling
edited Jun 10 at 4:11
asked Jun 9 at 17:32
Abhinav Agarwal
11916
11916
2
There are problems with the indentation of the code, please fix them. Is there any particular reason why you want to use signals for this?
â Daniel
Jun 9 at 18:04
there is no particular reason of using the signal.
â Abhinav Agarwal
Jun 10 at 4:15
add a comment |Â
2
There are problems with the indentation of the code, please fix them. Is there any particular reason why you want to use signals for this?
â Daniel
Jun 9 at 18:04
there is no particular reason of using the signal.
â Abhinav Agarwal
Jun 10 at 4:15
2
2
There are problems with the indentation of the code, please fix them. Is there any particular reason why you want to use signals for this?
â Daniel
Jun 9 at 18:04
There are problems with the indentation of the code, please fix them. Is there any particular reason why you want to use signals for this?
â Daniel
Jun 9 at 18:04
there is no particular reason of using the signal.
â Abhinav Agarwal
Jun 10 at 4:15
there is no particular reason of using the signal.
â Abhinav Agarwal
Jun 10 at 4:15
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
2
down vote
Logger.setLevel()
is the right way to dynamically change the logging level of a Logger object. Your script will work fine.
I'll nitpick:
Code is read from top to bottom. You should place the comments above the group of statements they are attached to, not below them. If the reader reads the comment first, they won't have to spend extra effort to decipher the meaning of the following lines, because they have read the annotation first.
Be wary of using asynchronous signal handlers when you are using the logging module. I know that this is a tiny example script, but always refer to the documentation when you are using the Python standard library.
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
Logger.setLevel()
is the right way to dynamically change the logging level of a Logger object. Your script will work fine.
I'll nitpick:
Code is read from top to bottom. You should place the comments above the group of statements they are attached to, not below them. If the reader reads the comment first, they won't have to spend extra effort to decipher the meaning of the following lines, because they have read the annotation first.
Be wary of using asynchronous signal handlers when you are using the logging module. I know that this is a tiny example script, but always refer to the documentation when you are using the Python standard library.
add a comment |Â
up vote
2
down vote
Logger.setLevel()
is the right way to dynamically change the logging level of a Logger object. Your script will work fine.
I'll nitpick:
Code is read from top to bottom. You should place the comments above the group of statements they are attached to, not below them. If the reader reads the comment first, they won't have to spend extra effort to decipher the meaning of the following lines, because they have read the annotation first.
Be wary of using asynchronous signal handlers when you are using the logging module. I know that this is a tiny example script, but always refer to the documentation when you are using the Python standard library.
add a comment |Â
up vote
2
down vote
up vote
2
down vote
Logger.setLevel()
is the right way to dynamically change the logging level of a Logger object. Your script will work fine.
I'll nitpick:
Code is read from top to bottom. You should place the comments above the group of statements they are attached to, not below them. If the reader reads the comment first, they won't have to spend extra effort to decipher the meaning of the following lines, because they have read the annotation first.
Be wary of using asynchronous signal handlers when you are using the logging module. I know that this is a tiny example script, but always refer to the documentation when you are using the Python standard library.
Logger.setLevel()
is the right way to dynamically change the logging level of a Logger object. Your script will work fine.
I'll nitpick:
Code is read from top to bottom. You should place the comments above the group of statements they are attached to, not below them. If the reader reads the comment first, they won't have to spend extra effort to decipher the meaning of the following lines, because they have read the annotation first.
Be wary of using asynchronous signal handlers when you are using the logging module. I know that this is a tiny example script, but always refer to the documentation when you are using the Python standard library.
answered Jun 13 at 0:22
Berk Ãzbalcñ
20113
20113
add a comment |Â
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f196175%2fdynamically-change-logging-level-of-a-python-process%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
2
There are problems with the indentation of the code, please fix them. Is there any particular reason why you want to use signals for this?
â Daniel
Jun 9 at 18:04
there is no particular reason of using the signal.
â Abhinav Agarwal
Jun 10 at 4:15