【问题标题】:Deleting log4net logs older than n days from Auto scaled beanstalk Instances从自动缩放的 beanstalk 实例中删除超过 n 天的 log4net 日志
【发布时间】:2017-12-04 11:06:42
【问题描述】:

在我们的 AWS 环境中,Log4net 用于记录来自弹性负载均衡器后面的自动缩放 Beanstalk IIS 环境的异常。还使用了工作实例和 CodeDeploy 服务。

Worker 实例和 Beanstalk 实例都使用 log4net 将日志写入 udp 流以及日志文件。可以按日期和大小滚动。在 log4net 中无法旋转/删除超过 n 天的日志。这是多年未决:https://issues.apache.org/jira/browse/LOG4NET-367

由于自动缩放,我无法使用批处理文件删除日志文件超过 n 天。我必须从主机中删除旧日志的哪个选项?

更新#1

这个怎么样??

commands:
  0_mkdir:
    command: mkdir C:\\scripts\\

  1_create_script:
    file: C:\\scripts\\delAppLogs.bat
    content: |
      forfiles /p "C:\AppLogs" /s /m *.* /D -30 /C "cmd /c del @path"

  2_runSched_delAppLogs:
    command: SchTasks /Create /SC DAILY /TN "Delete Logs" /TR "c:\scripts\delAppLogs.bat" /ST 23:55 /RU SYSTEM

更新#2 使用 SchTasks 上的开关 /RU 以非交互方式运行脚本。

【问题讨论】:

    标签: .net amazon-elastic-beanstalk log4net amazon-elb log4net-configuration


    【解决方案1】:

    您需要使用 ebextensions 自定义服务器并创建清理旧日志的计划任务。

    在您的 Web 应用程序根目录中名为 .ebextensions 的文件夹中创建一个 yaml init.config 文件。还添加一个 bat/ps 文件以使用您的应用程序进行删除(或从 s3 下载一个),该文件将 yaml 的内容设置如下:

    commands:
      00-log-cleanup:
        command: SchTasks /Create /SC DAILY /TN "Delete Logs" /TR "c:\myapp\deletelogs.bat" /ST 23:55
    

    阅读有关 ebextensions 的更多信息here。 阅读计划任务实用程序here

    【讨论】:

    • 检查更新#1。有什么建议吗?
    • 嗨 - 这应该做得很好!你试过了吗?顺便说一句,您发现我在我将更新的 yaml 示例中使用了错误的标头。不过有一件事 - 我会更改作业计划以更快地运行,以便您可以验证它的工作。
    • 我正在使用 forfiles 命令在普通实例上测试计划任务。然后将转移到EB。感谢您的帮助。
    • @Amogh 测试进行得如何?
    • 对于 forfiles 来说非常好,我还添加了一些 Send-MailMessage 以将文件列表作为警报发送。这是通过手动创建计划任务来测试的。对于 .ebextensions,脚本需要由开发人员合并,然后它将在下一个版本中部署......你知道这些东西是如何工作的。 :) 我会及时通知你。
    猜你喜欢
    • 1970-01-01
    • 2014-01-27
    • 2014-07-09
    • 1970-01-01
    • 2013-12-04
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    相关资源
    最近更新 更多