从自动缩放的 beantalk 实例中删除早于 n 天的 log4net 日志

Deleting log4net logs older than n days from Auto scaled beanstalk Instances

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

Worker 实例和Beanstalk 实例都使用log4net 将日志写入udp 流以及日志文件。可以按日期和大小滚动。 rotating/deleting 超过 n 天的日志在 log4net 中是不可能的。这待定多年: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。

您需要使用 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.