ydf0509 / nb_log

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

日志压缩和定时删除问题 #37

Closed FireJohnny closed 1 year ago

FireJohnny commented 1 year ago

1.我在本地尝试了使用多进程日志,目前只能日志切分不能对切分后的日志压缩 2.怎么定时删除老的日志,是需要我们自己实现的吗。 3.我在跑你的demo的时候的报错问题: Error in atexit._run_exitfuncs: Traceback (most recent call last): File "D:\software\python39\lib\site-packages\nb_log\handlers.py", line 697, in _rollover_and_do_write self._do_lock() File "D:\software\python39\lib\site-packages\concurrent_log_handler__init.py", line 418, in _do_lock raise RuntimeError("Cannot acquire lock after 10 attempts") RuntimeError: Cannot acquire lock after 10 attempts 4、在win下面有一个.file.lock的文件,这个怎么自动删除

请大佬解答一下

ydf0509 commented 1 year ago

nblog本来就自带删除老日志功能 你看配置文件的backcount就能看出来了,就是指定最多备份几个文件。你才生成几个文件就判断nblog不能删除旧日志。

ydf0509 commented 1 year ago

日志文件怎么压缩?把txt文件后缀改成zip占用体积就能变小了?

FireJohnny commented 1 year ago

我简单梳理过逻辑了 1、nb_log日志目前确实不能压缩,不是改后缀,而是用压缩工具对日志进行压缩的,比如用zipfile对日志进行压缩,是可以减少空间的 2、目前nblog支持的是滚动删除的机制,删除最早的日志,但是不符合一些业务需求,其实我想实现的是日志转储,压缩后过期删除日志 3、第三、四个问题 目前没有找到解决方案

ydf0509 commented 1 year ago

要发你的代码才知道,这个很多人用,没有出现你这个问题

ydf0509 commented 1 year ago

不支持压缩,压缩后看日志还要解压。目前没有任何python日志包自带压缩,这是伪需求,自己买个大的硬盘就好了

FireJohnny commented 1 year ago

代码就是:

import time

from nb_log import get_logger
from multiprocessing import Process
logger = get_logger("test",is_add_stream_handler=True, log_filename='hax.log',log_file_size=10)

def f():
    for i in range(1000000):
        time.sleep(0.001)
        logger.info('测试文件写入性能,在满足 1.多进程运行 2.按大小自动切割备份 3切割备份瞬间不出错'
                     '这3个条件的前提下,验证这是不是python史上文件写入速度遥遥领先 性能最强的python logging handler')

if __name__ == "__main__":
    [Process(target=f).start() for _ in range(10)]

2022-08-27 15:13:51 - test - "D:\project\local_data\code\nb_log_test.py:18" - f - INFO - 测试文件写入性能,在满足 1.多进程运行 2.按大小自动切割备份 3切割备份瞬间不出错这3个条件的前提下,验证这是不是python史上文件写入速度遥遥领先 性能最强的python logging handler Error in atexit._run_exitfuncs: Traceback (most recent call last): File "D:\software\python39\lib\site-packages\nb_log\handlers.py", line 697, in _rollover_and_do_write self._do_lock() File "D:\software\python39\lib\site-packages\concurrent_log_handler__init__.py", line 418, in _do_lock raise RuntimeError("Cannot acquire lock after 10 attempts") RuntimeError: Cannot acquire lock after 10 attempts

FireJohnny commented 1 year ago

大佬 还有一个问题 如果我是指定了日志存储的路径 就会出现 FileNotFoundError: [Errno 2] No such file or directory: 'D:\opt\cloud\logs\.__hax.lock'

忽略此问题 ,已解决

ydf0509 commented 1 year ago

nb_log不打算压缩zip tar文件