我有以下配置,但我无法找到有关如何在日期滚动样式上设置最大备份文件的任何文档.我知道您可以使用maxSizeRollBackups以大小滚动样式执行此操作.
<appender name="AppLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="mylog.log" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Date" />
<datePattern value=".yyMMdd.'log'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d %-5p %c - %m%n" />
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
Cha*_*ler 46
你不能.
来自
log4net SDK参考
RollingFileAppender类
警告
不支持在日期/时间边界上滚动时的最大备份文件数.
Jef*_*eff 39
即使它不受支持,这是我处理这种情况的方式:
这是我的配置:
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\logs\LoggingTest\logfile.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date - %message%newline" />
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
在应用程序启动时我做:
XmlConfigurator.Configure();
var date = DateTime.Now.AddDays(-10);
var task = new LogFileCleanupTask();
task.CleanUp(date);
Run Code Online (Sandbox Code Playgroud)
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using log4net;
using log4net.Appender;
using log4net.Config;
public class LogFileCleanupTask
{
#region - Constructor -
public LogFileCleanupTask()
{
}
#endregion
#region - Methods -
/// <summary>
/// Cleans up. Auto configures the cleanup based on the log4net configuration
/// </summary>
/// <param name="date">Anything prior will not be kept.</param>
public void CleanUp(DateTime date)
{
string directory = string.Empty;
string filePrefix = string.Empty;
var repo = LogManager.GetAllRepositories().FirstOrDefault(); ;
if (repo == null)
throw new NotSupportedException("Log4Net has not been configured yet.");
var app = repo.GetAppenders().Where(x => x.GetType() == typeof(RollingFileAppender)).FirstOrDefault();
if (app != null)
{
var appender = app as RollingFileAppender;
directory = Path.GetDirectoryName(appender.File);
filePrefix = Path.GetFileName(appender.File);
CleanUp(directory, filePrefix, date);
}
}
/// <summary>
/// Cleans up.
/// </summary>
/// <param name="logDirectory">The log directory.</param>
/// <param name="logPrefix">The log prefix. Example: logfile dont include the file extension.</param>
/// <param name="date">Anything prior will not be kept.</param>
public void CleanUp(string logDirectory, string logPrefix, DateTime date)
{
if (string.IsNullOrEmpty(logDirectory))
throw new ArgumentException("logDirectory is missing");
if (string.IsNullOrEmpty(logPrefix))
throw new ArgumentException("logPrefix is missing");
var dirInfo = new DirectoryInfo(logDirectory);
if (!dirInfo.Exists)
return;
var fileInfos = dirInfo.GetFiles("{0}*.*".Sub(logPrefix));
if (fileInfos.Length == 0)
return;
foreach (var info in fileInfos)
{
if (info.CreationTime < date)
{
info.Delete();
}
}
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
Sub方法是一个扩展方法,它基本上包装string.format,如下所示:
/// <summary>
/// Extension helper methods for strings
/// </summary>
[DebuggerStepThrough, DebuggerNonUserCode]
public static class StringExtensions
{
/// <summary>
/// Formats a string using the <paramref name="format"/> and <paramref name="args"/>.
/// </summary>
/// <param name="format">The format.</param>
/// <param name="args">The args.</param>
/// <returns>A string with the format placeholders replaced by the args.</returns>
public static string Sub(this string format, params object[] args)
{
return string.Format(format, args);
}
}
Run Code Online (Sandbox Code Playgroud)
Maf*_*osh 11
几个月前我花了一些时间研究这个问题.v1.2.10不支持基于按日期滚动删除较旧的日志文件.它位于下一版本的任务列表中.我自己获取了源代码并添加了功能,如果他们感兴趣,可以将其发布给其他人.问题和补丁可以在https://issues.apache.org/jira/browse/LOG4NET-27找到.
不确定您到底需要什么。以下是我的 lo4net.config 文件之一的摘录:
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<param name="File" value="App_Data\log"/>
<param name="DatePattern" value=".yyyy-MM-dd-tt".log""/>
<param name="AppendToFile" value="true"/>
<param name="RollingStyle" value="Date"/>
<param name="StaticLogFileName" value="false"/>
<param name="maxSizeRollBackups" value="60" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%r %d [%t] %-5p %c - %m%n"/>
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61459 次 |
| 最近记录: |