问题标签 [log-rotation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
518 浏览

linux - 日志轮换:应用程序不写入截断的新日志文件

我相信你们都做得很好。

我们计划为以下文件实施日志轮换。 stdout.log

我们使用下面的日志轮换配置文件。

我们注意到文件正在旋转并且文件被截断。但是应用程序不会将日志写入新文件。我们尝试发送 HUP 信号,但没有成功。

应用程序本身没有重新加载选项,我们在需要重新加载或重新启动应用程序时停止应用程序并启动应用程序。

我们使用下面的命令来启动应用程序

我们使用下面的命令来杀死应用程序

对于这种情况,我们如何实现日志轮换机制?

0 投票
2 回答
128 浏览

bash - shell:日志目录轮换,更紧凑的代码避免代码重复

在我的 shell 脚本中,我需要轮换日志目录。我正在寻找一种比这更紧凑、可扩展和优雅的方式,但目前不知道如何解决这个问题,即在 while 循环中并使用变量进行计算。

您是否有一个更紧凑的代码的想法,可以轻松扩展到 n_days ?对此的任何帮助都会得到很大的帮助。非常感谢这个前期。

0 投票
1 回答
1110 浏览

python - 当 python 代码从 Windows 服务启动时,记录器文件轮换不起作用

我正在从 Windows 服务(在 python 中创建,使用 pyinstaller 转换为 exe 并使用 sc 安装)启动一个 python 应用程序(使用 pyInstaller 创建的 exe 版本),但我的应用程序生成的日志文件没有得到轮换。

所以我实际上使用了一个 logger.conf 文件,该文件具有记录器配置和旋转文件处理程序,以在每 10KB 后旋转文件(用于测试目的)。conf 文件中的配置如下所示:

在 python 代码中,我使用这个配置来创建和轮换日志文件。

以下是正确的日志文件轮换工作的情况列表:

1- python 版本使用 python 命令启动
2- exe 版本(使用 PyInstaller 创建)在直接双击启动时工作正常
3- 从 Windows 服务启动时的 exe 版本也使用 python 创建,如果服务是使用 python 命令安装的如下所示:

现在是它不起作用的时候:
我正在将 Windows 服务代码转换为 exe(再次使用 pyInstaller)并使用以下命令使用 sc 安装服务:

开始使用此服务时,应用程序运行良好,并且也生成了日志文件,但在达到 fileHandler 中为日志定义的最大大小后,它不会创建另一个日志文件,因此只会卡在那里的日志。该应用程序一直运行良好,只是没有记录日志。

这是我尝试并观察到的:
1- 在这两种情况下,我都使用 subprocess.Popen() 命令启动了我的应用程序 exe 版本,并且我的应用程序没有任何 UI 元素,因此它在后台的 Windows 会话 0 中完美运行。仅供参考,以防万一。
2-如果我删除现有的日志语句并清空日志文件,则日志开始记录到文件中,并在达到最大大小时再次停止。
3-我已经使用 os.getcwd() 命令来获取我的应用程序在启动时运行的目录,在这两种情况下我都在以下目录中找到:

在使用 python 案例安装的 python 服务中,应用程序在 "C:\Users\\AppData\Local\Programs\Python\Python36\lib\site-packages\win32" 中运行

在从使用 sc 案例安装的服务启动的 exe 版本中,应用程序在“C:\Windows\system32”中运行

虽然在这两种情况下,logging.conf 文件都提供了日志文件的创建路径,所以我假设这不应该是任何问题(事实上,日志文件确实是在预期的位置创建的,只是文件轮换不起作用,所以我猜测不相关)

我只需要使用 sc 安装的 exe 版本,而不是 python 服务版本。如何解决这个问题,任何帮助或指导或方向表示赞赏。

0 投票
1 回答
650 浏览

linux - 日志旋转不会拆分文件并减少它

我正在尝试在我的流式传输作业中实现日志轮换。这是我的测试配置文件。

当我尝试运行 logrotate 时,所发生的只是日志文件 first_run.out 附加了 .1 文件未拆分并且 zip 不会发生在拆分文件中。

编辑:当我尝试使用 -v 选项时,我得到了这个日志

0 投票
0 回答
683 浏览

bash - What is the best way to implement log rotation? (Node application)

I need to rotate logs files created by node processes as file sized keeps on increasing. Application runs in ubuntu on aws ec2 instances.

I have few forever node processes running which writes logs into below files.

My CloudWatch Agent also looking at these files and pushes the logs to cloudwatch and node applications also continuously write logs into these files.

I need to find the best way to rotate these log files and clean up older files without affecting any of the above processes.

unsure below approach going cause troubles since it's going to move the file and going to create a new file

Need to implement a log rotation mechanism without affecting Cloudwatch agent which reads the log file or the application which write logs

0 投票
1 回答
466 浏览

python - 自定义旋转器和命名器函数不适用于 python 中的 RotatingFileHandler 记录器处理程序?

我在下面提到了使用旋转器和命名器功能的链接,但它们不起作用(没有任何区别)

链接:https ://docs.python.org/3/howto/logging-cookbook.html#using-a-rotator-and-namer-to-customize-log-rotation-processing

我希望将日志压缩并命名为 system1.log.gz,但它们像 system.log.1 一样保存,因此我进行了以下更改,但仍然无法正常工作。

环境:python 2.7.5

预期的压缩日志名称:system1.log.gz

实际非压缩日志名称:system.log.1

0 投票
1 回答
672 浏览

ansible - 什么是 Ansible 日志轮换周期?

ansible.cfg中,我使用log_path变量来定义保存 Ansible 日志的位置。日志文件会自动生成并填充,但日志轮换似乎无效。我需要有关 Ansible 日志轮换的信息。

  • 日志何时轮换 - 每天,根据文件大小,...?
  • 是文件轮换还是文件内容轮换?

在 ansible.cfg 中定义 log_path 后,我运行 Ansible 数周数次。日志已保存,但没有轮换。

我会有两个文件:

  • /my/ansible/log.path包含最新日志
  • /my/ansible/log.path.0例如包含最旧的日志

但我只将所有日志保存在/my/ansible/log.path.

0 投票
2 回答
37 浏览

regex - 无法使用日志轮换从选定的日志文件中搜索字符串

我有这种模式的日志文件 -

我想从某个日期范围内获取文件中某些文本的出现次数——例如 20 到 21 日。

虽然以下对我有用,但要在 20 秒的整个范围内出现文件 -

试图只在 20 到 21 的范围内,我尝试了
我阅读https://stackoverflow.com/a/17000211/351903中给出的解决方案

为了使基本的正则表达式工作,我尝试了以下,但它没有给我任何结果 -

0 投票
1 回答
239 浏览

spring - Spring中如何通过自定义用户事件管理日志文件切换?

假设我们使用Logback进行日志记录。

每次发生特定事件(即函数调用)时,都需要更改日志文件的路径。

例如,我们在某处调用函数。

在此事件之后,记录器将开始写入logs/mySegment_A.log文件。然后,再次执行呼叫:

在此事件之后,记录器应完成对前一个文件的写入并开始写入该logs/mySegment_B.log文件。

假设更改的状态startNewLogSegment应该在整个应用程序(所有线程)中可见。


我尝试将这种方法与 MDC 一起应用:

logback.xml

MDC.put("id", "A")并在出现自定义事件时调用。

但它的工作方式与我需要的不同。

众所周知,MDC以每个线程为基础管理上下文信息,因此至少我们需要控制线程创建以实现上述目标。

我想知道这种方法是否可以与 Spring 一起使用,特别是 Spring Reactor 执行的异步操作。我没有找到关于使用自定义线程池进行内部 Spring 活动的信息。

可能,我希望有一种更简单的方法来调整日志记录而不滥用 Spring 内部结构。

0 投票
1 回答
321 浏览

java - log4j - log-rotation 没有清除 rotator 日志

我正在使用 log4j 1.x(带有 slf4j)。日志轮换是工作文件,但它不会清除轮换的日志。

这是 log4.xml 的内容 -

由于某种原因,生成了 300 多个文件,而不是 24 个文件。每个日志文件的大小从 150MB 到 350MB 不等,并且每小时轮换一次。

在 pom.xml 中,

依赖树:

我需要明白——

  1. 当 MaxBackupIndex 被提及为 24 时,为什么会生成超过 24 个文件?
  2. 由于我没有指定任何MaximumFileSize,默认不应该是10MB吗?