Django命令和视图的多处理器日志记录,带共享函数
是否可以将命令和视图的日志记录到不同的日志文件中,同时使用一个公共的函数来处理命令和视图?把记录器作为函数参数传递肯定不是一个好的设计。
settings.py
'loggers': {
'Web': {
'handlers': ['logfile_website'], # -> views.log
'Commands': {
'handlers': ['logfile_commands'], # -> commands.log
}
views.py -> 记录到 views.log 文件中
log = logging.getLogger('Web')
def index(request):
log.info('In view')
my_common.common_function(1)
command.py -> 记录到 commands.log 文件中
log = logging.getLogger('Commands')
class Command(BaseCommand):
def handle(self, *args, **options):
log.info('In command')
my_common.common_function(2)
my_common.py -> 根据调用者的不同记录到相应的位置
def common_function(param):
log = How to get logger based on current call stack?
log.info('In common function')
1 个回答
0
你可以使用一个统一的处理程序,这个处理程序会根据环境选择不同的文件名。例如,在POSIX系统上,
LOG_FILENAME = os.environ.get('LOGFILE', 'views.log')
# then use the filename in your configuration
然后你可以用下面的方式运行命令
LOGFILE=commands.log python manage.py syncdb
这里我用syncdb
作为一个命令的例子。