Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #4503
| From | Peter Otten <__peter__@web.de> |
|---|---|
| Newsgroups | de.comp.lang.python |
| Subject | Re: [Python-de] Loggen in unterschiedliche Dateien |
| Date | 2016-08-04 16:33 +0200 |
| Organization | None |
| Message-ID | <mailman.162.1470322120.6033.python-de@python.org> (permalink) |
| References | <d55e9378-6ce7-4562-a583-7eaa7406c655@googlegroups.com> <bbe0a23e-cfd5-4af8-89a4-5136e9e801d4@googlegroups.com> <nnvjnc$brm$1@blaine.gmane.org> |
rkoch83--- via python-de wrote:
> Ok, Ingrid habe jetzt hiermit erreicht was ich wollte:
>
> Version 3
> =========
> logger = logging.getLogger(experiment)
> logger.handlers = []
> logger.addHandler(logging.FileHandler(
> filename="/home/xnat/xnat_data/logs/{}_{}.log".format(project,
> experiment)))
> logger.handlers[-1].setFormatter(logging.Formatter('%(asctime)s - %(name)s
> - %(levelname)s: %(message)s')) logger.setLevel(logging.DEBUG)
>
> logger.info("Project: {}, Experiment: {}".format(project, experiment))
>
> del logging.Logger.manager.loggerDict[experiment]
> =========
>
> Es erscheint mir nicht besonders elegant oder "pythonic" so in die
> Eingeweide des Moduls einzugreifen. Geht das schöner? Welche Risiken birgt
> diese Vorgehensweise?
Du wirst vom Blitz getroffen und dann von einem Bus überfahren ;)
Im Ernst, ich würde wahrscheinlich nur die Zieldatei des FileHandlers
variieren und alles andere in Ruhe lassen. Hier mein Versuch, die
wesentlichen Teile vom RotatingFileHandler zu klauen:
import logging
import os
class RetargetableFileHandler(logging.FileHandler):
def retarget(self, filename):
if self.stream:
self.stream.close()
self.stream = None
self.baseFilename = os.path.abspath(filename)
if not self.delay:
self.stream = self._open()
def get_filename(project, experiment):
return "/home/xnat/xnat_data/logs/{}_{}.log".format(project, experiment)
first = True
project = "spam"
for experiment in ["foo", "bar", "baz"]:
if first:
# run once
logger = logging.getLogger()
handler = RetargetableFileHandler(get_filename(project, experiment))
handler.setFormatter(
logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s: %(message)s'))
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
first = False
else:
# specify new destination
handler.retarget(get_filename(project, experiment))
# log something
logger.info("Project: {}, Experiment: {}".format(project, experiment))
Back to de.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
Loggen in unterschiedliche Dateien rkoch83@googlemail.com - 2016-08-04 01:35 -0700
Re: Loggen in unterschiedliche Dateien rkoch83@googlemail.com - 2016-08-04 03:29 -0700
Re: [Python-de] Loggen in unterschiedliche Dateien Peter Otten <__peter__@web.de> - 2016-08-04 16:33 +0200
Re: [Python-de] Loggen in unterschiedliche Dateien rkoch83@googlemail.com - 2016-08-04 23:59 -0700
Re: [Python-de] Loggen in unterschiedliche Dateien Peter Otten <__peter__@web.de> - 2016-08-05 09:53 +0200
csiph-web