从Auto scaled beanstalk实例中删除超过n天的log4net日志

时间:2017-06-30 13:08:50

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

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

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

由于自动缩放,使用批处理文件删除日志文件焊接比n天不可能。我有什么选项可以从主机中删除旧日志?

更新#1

这个怎么样?

$today= date('Y-m-d');
$today=date('Y-m-d', strtotime($today));;
$date1= date('Y-m-d', strtotime("01/01/2001"));
$date2= date('Y-m-d', strtotime("01/01/2012"));

if (($today> $date1) && ($today< $date2)){
  echo "OK !";
}else{
  echo "NO OK !";  
}

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

1 个答案:

答案 0 :(得分:1)

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

在Web应用程序根目录中名为init.config的文件夹中创建yaml .ebextensions文件。还要添加一个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