java中logger日志是记在哪的_java logger「建议收藏」

java中logger日志是记在哪的_java logger「建议收藏」python中替代logging的日志系统

java中logger日志是记在哪的_java logger「建议收藏」

python中替代logging的日志系统。

不过比之前的logging难理解。

先上打印到屏幕上的代码和存到日志文件中的代码:

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

from logbook import Logger, StreamHandler, TimedRotatingFileHandler

import sys

import os

StreamHandler(sys.stdout).push_application()

log = Logger(‘Logbook’)

log.info(‘Hello, World!’)

LOG_DIR = os.path.join(‘log’)

if not os.path.exists(LOG_DIR):

os.makedirs(LOG_DIR)

TimedRotatingFileHandler(os.path.join(LOG_DIR, ‘%s.log’ % ‘user_log’), date_format=’%Y%m%d’, bubble=True).push_application()

user_log = Logger(‘user_log’)

user_log.info(‘user_log mytest….’)

然后看rqalpha代码,发现实际上写主要有两种类型,一种为打印到屏幕,一种为打印到文件。

在初始化时,需要先利生成Logger实例:

user_log = Logger(“user_log”)

需要打印到屏幕,则生成打印到屏幕的句柄:

user_std_handler = user_std_handler = ColorizedStderrHandler(bubble=True)

然后对此句柄设置日志格式:

user_std_handler.formatter = user_handler_log_formatter

若想使此设置生效,

只需申明user_log的句柄:

user_log.handlers = []

然后将之加入即可

user_log.handlers.append(user_std_handler)

同理,如果希望日志同时支持打印到文件,只需按照上述步骤再来一次即可。

user_file_handler = TimedRotatingFileHandler(

os.path.join(os.path.join(‘log’) , ‘%s.log’ % ‘test_log’), date_format=’%Y%m%d’, bubble=True)

user_file_handler.formatter = user_handler_log_formatter

user_log.handlers.append(user_file_handler)

user_handler_log_formatter是一个日志格式函数,返回打印的日志以什么方式呈现。

整体代码如下:

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

# filename:logger.py

import os

import logbook

from logbook import Logger, TimedRotatingFileHandler

from logbook.more import ColorizedStderrHandler

DATETIME_FORMAT = “%Y-%m-%d %H:%M:%S.00”

def user_handler_log_formatter(record, handler):

log = “[{dt}][{level}][{filename}][{func_name}][{lineno}] {msg}”.format(

dt=record.time,

level=record.level_name, # 日志等级

filename = os.path.split(record.filename)[-1], # 文件名

func_name = record.func_name, # 函数名

lineno = record.lineno, # 行号

msg=record.message, # 日志内容

)

return log

# 打印到屏幕句柄

user_std_handler = ColorizedStderrHandler(bubble=True)

user_std_handler.formatter = user_handler_log_formatter

# 日志路径,在主工程下生成log目录

LOG_DIR = os.path.join(‘log’)

if not os.path.exists(LOG_DIR):

os.makedirs(LOG_DIR)

# 打印到文件句柄

user_file_handler = TimedRotatingFileHandler(

os.path.join(LOG_DIR , ‘%s.log’ % ‘test_log’), date_format=’%Y%m%d’, bubble=True)

user_file_handler.formatter = user_handler_log_formatter

# 用户代码logger日志

user_log = Logger(“user_log”)

def init_logger():

logbook.set_datetime_format(“local”)

user_log.handlers = []

user_log.handlers.append(user_std_handler)

user_log.handlers.append(user_file_handler)

# 初始化日志系统(被默认调用)

init_logger()

测试代码如下:

#!/usr/bin/evn python3

# -*- coding: utf-8 -*-

# filename: test_looger.py

import os

from logger import user_log as logger

if __name__ == “__main__”:

logger.info(“my test.”)

打印日志如下:

[2017-08-26 19:10:10.226902][INFO][test_logger.py][][8] my test.

今天的文章java中logger日志是记在哪的_java logger「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/77268.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注