ydf0509 / nb_log

pip install nb_log 各种日志handler和自动转化项目的任意print的效果。日志自动彩色炫酷,可点击控制台的日志自动精确跳转到pycharm的文件和行号。文件日志多进程切割安全。在10个最重要方面全方位超过loguru
389 stars 73 forks source link

新特性请求:将print记录到日志中 #56

Closed lsp84ch83 closed 1 year ago

lsp84ch83 commented 1 year ago

项目已实现自动print转换效果可以定位到出处,然后一处处将print修改成log输出,但当项目较大的时候,这个方法不太方便,是否能增加新特性将print的内容也加入到log日志中。虽然更好的方式是约束开发规范

ydf0509 commented 1 year ago

可以。安排。

lsp84ch83 commented 1 year ago

大佬666,坐等更新

ydf0509 commented 1 year ago

安装nb_log 9.1版本,

看1.1.d文档,增加了两个配置文件名 https://nb-log-doc.readthedocs.io/zh_CN/latest/articles/c1.html#d-nb-log

# 项目中的print是否自动写入到文件中。值为None则不重定向标准输出到文件中。 自动每天一个文件, 2023-06-30.my_proj.out,生成的文件位置在定义的LOG_PATH
# 如果你设置了环境变量,export PRINT_WRTIE_FILE_NAME="my_proj.print" (linux临时环境变量语法,windows语法自己百度这里不举例),那就优先使用环境变量中设置的文件名字,而不是nb_log_config.py中设置的名字
PRINT_WRTIE_FILE_NAME = Path(sys.path[1]).name + '.print' 

# 项目中的所有标准输出(不仅包括print,还包括了streamHandler日志)都写入到这个文件。自动每天一个文件, 2023-06-30.my_proj.std,生成的文件位置在定义的LOG_PATH
# 如果你设置了环境变量,export SYS_STD_FILE_NAME="my_proj.std"  (linux临时环境变量语法,windows语法自己百度这里不举例),那就优先使用环境变量中设置的文件名字,,而不是nb_log_config.py中设置的名字
SYS_STD_FILE_NAME = Path(sys.path[1]).name + '.std'  
lsp84ch83 commented 1 year ago

安装nb_log 9.1版本,

看1.1.d文档,增加了两个配置文件名 https://nb-log-doc.readthedocs.io/zh_CN/latest/articles/c1.html#d-nb-log

# 项目中的print是否自动写入到文件中。值为None则不重定向标准输出到文件中。 自动每天一个文件, 2023-06-30.my_proj.out,生成的文件位置在定义的LOG_PATH
# 如果你设置了环境变量,export PRINT_WRTIE_FILE_NAME="my_proj.print" (linux临时环境变量语法,windows语法自己百度这里不举例),那就优先使用环境变量中设置的文件名字,而不是nb_log_config.py中设置的名字
PRINT_WRTIE_FILE_NAME = Path(sys.path[1]).name + '.print' 

# 项目中的所有标准输出(不仅包括print,还包括了streamHandler日志)都写入到这个文件。自动每天一个文件, 2023-06-30.my_proj.std,生成的文件位置在定义的LOG_PATH
# 如果你设置了环境变量,export SYS_STD_FILE_NAME="my_proj.std"  (linux临时环境变量语法,windows语法自己百度这里不举例),那就优先使用环境变量中设置的文件名字,,而不是nb_log_config.py中设置的名字
SYS_STD_FILE_NAME = Path(sys.path[1]).name + '.std'  

大佬,更新速度啊,我这就去更新感受下

lsp84ch83 commented 1 year ago

新增加print追加到log该功能也许是自己的打开方式不对,有几点疑惑,还请大佬不吝指教 1、FileWritter().file_path 我看源码是读取的nb_log_config_default.LOG_PATH,那么用户自己的配置文件修改PRINT_WRTIE_FILE_NAME应该是不生效的,在运行的时候会提示目录不存在/User/用户名/pyhontlogs

image

2、是否可以把print的内容 追加到LOG_PATH的 *.log 文件中,而不是分开记录(类似的效果是print等同于log.info的记录) 3、自动生成配置文件删除后,在运行不会重新生成

image
ydf0509 commented 1 year ago

1、那就要自动创建文件夹,需要Filewritter先改下,自动创建LOG_PATH定义的文件夹。 2、是否可以把print的内容 追加到LOG_PATH的 *.log 文件中,而不是分开记录? 这是不可能的,一个项目可以有 a.log b.log c.log, 那我把print自动加到哪个 .log文件中? 不是有 .print 文件和 .std两个文件吗? .std文件中就包括了 所有日志和print了。 是.print 文件只有print的。 .std是包括了日志了的。

ydf0509 commented 1 year ago

3、不会重新生成是不可能的,那就会报错的,自己看控制台提示,提示生成到什么文件了,生成文件后,要刷新pycahrm左侧懂了吗

lsp84ch83 commented 1 year ago

3、不会重新生成是不可能的,那就会报错的,自己看控制台提示,提示生成到什么文件了,生成文件后,要刷新pycahrm左侧懂了吗

这个是运行后的所有报错,是真的没有生成配置文件,我重启过pycharm、清理过项目缓存、还去过项目目录去看,都没有生成

image
ydf0509 commented 1 year ago

你这个报错是没有自动创建日志文件夹,不是报错没有生成nb_log_config.py

ydf0509 commented 1 year ago

image 我在添加自动创建LOG_PATH目录了,你这个报错是犹豫没有自动创建日志文件夹

ydf0509 commented 1 year ago

LOG_PATH你先换个建好了的文件夹就好了

ydf0509 commented 1 year ago

image 控制台提示了读取的什么文件,你那个是由于代码中没有自动创建 LOG_PATH路径,和配置文件无关

lsp84ch83 commented 1 year ago

我的疑问:

  1. /Users/XX/pythonlogs,这个目录无法自动创建导致报错,从而nb_log_config.py配置文件无法自动创建,我尝试过把库卸载后重新下载,然后去运行依旧会报如上的错误,且不会自动创建/Users/XX/pythonlogs目录和配置文件,直到我手动创建了/Users/XX/pythonlogs这个目录才停止报错
  2. DEFAULT_ADD_MULTIPROCESSING_SAFE_ROATING_FILE_HANDLER = False 这个参数默认为False,那是否就不用将/Users/XX/pythonlogs这个目录作为前置从而影响nb_log_config.py配置文件的创建,而是通过将值设置为True后,在检测目录是否存在,不存在则新建,因为第一次运行的时候其实是没有配置文件的,而更多的习惯LOG_PATH其实是需要进行修改的
ydf0509 commented 1 year ago

是的,还需要改下那。生创建配置的模块里面要去掉导入monkey print,因为monkey print要依赖生成的配置文件读取log_path。

ydf0509 commented 1 year ago

windows用户,自动在磁盘根目录创建 /pythonlogs, linux mac权限严格,如果不能自动创建文件夹,需要自己手动创建文件夹

debugable commented 1 year ago

std_writter = OsFileWritter(sys_std_file_name,back_count=nb_log_config_default.LOG_FILE_BACKUP_COUNT,max_bytes=nb_log_config_default.LOG_FILE_SIZE 1024 1024) 这个为什么要放在根目录呢?

ydf0509 commented 1 year ago

std_writter = OsFileWritter(sys_std_file_name,back_count=nb_log_config_default.LOG_FILE_BACKUP_COUNT,max_bytes=nb_log_config_default.LOG_FILE_SIZE 1024 1024) 这个为什么要放在根目录呢?

可以配置的,nb_log_config.py可以配置

ydf0509 commented 1 year ago

已实现,记录标准输出 和 print到日志文件