我配置log4net以使用复合RollingFileAppender,以便当前文件始终命名为logfile.log,所有后续文件都命名为logfile-YYYY.MM.dd.seq.log,其中seq是序列号,如果日志超过特定大小在一天之内.不幸的是,我在配置这样的设置方面收效甚微.
编辑:
我当前的配置粘贴在下面.它已根据几个答案进行了更新,使我足够接近我的需求.这将生成以下格式的文件:logfile_YYYY.MM.dd.log.seq
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\\logfile"/>
<staticLogFileName value="false"/>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="_yyyy.MM.dd".log""/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="75KB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud)
一个有趣的说明,设置
<staticLogFileName value="false"/>
Run Code Online (Sandbox Code Playgroud)
为true会导致记录器不写入任何文件.
我确实有一个非常奇怪的问题!我想知道问题是在框架中,操作系统还是仅仅是我,误解了一些事情......
我有一个文件,可能是很久以前创建的,我使用该文件,然后我想通过更改它的名称来存档它.然后我想在重命名之前创建一个与旧文件同名的新文件.够容易!
真正困扰我的问题是,新创建的文件出错了"创建" - 时间戳!这是一个问题,因为它是我想用来确定何时存档和创建新文件的时间戳.
我创建了一个非常小的样本来显示问题.要使示例正常工作,Files文件夹中必须有一个文件1.txt.此外,还必须及时设置文件属性(使用其中一个工具,我使用Nomad.NET).
static void Main(string[] args)
{
// Create a directory, if doesnt exist.
string path = Path.GetDirectoryName(Application.ExecutablePath) + "\\Files";
Directory.CreateDirectory(path);
// Create/attach to the 1.txt file
string filename = path + "\\1.txt";
StreamWriter sw = File.AppendText(filename);
sw.WriteLine("testing");
sw.Flush();
sw.Close();
// Rename it...
File.Move(filename, path + "\\2.txt");
// Create a new 1.txt
sw = File.AppendText(filename);
FileInfo fi = new FileInfo(filename);
// Observe, the old files creation date!!
Console.WriteLine(String.Format("Date: {0}", fi.CreationTime.Date));
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud) 在MSDN FileSystemWatcher类页面上,它包含一个具有以下类属性的示例:
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
Run Code Online (Sandbox Code Playgroud)
这样做的目的是什么?什么时候应该包含还是不包括在内?
FileSystemWatcher类帮助页面位于:http: //msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
我在C#中使用
关心亚历克斯
我在用C#编写的Windows服务程序中使用log4net RollingFileAppender.日志目录中文件的数量和大小增长得太快,需要清理.配置如下:
<appender name="Rolling Log" type="log4net.Appender.RollingFileAppender">
<file value="..\logs\MyProgram.%cs{instanceName}.log" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value=".yyyy-MM-dd.lo\g" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="150MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%-5level] %property{remoteUser} [%threadIdentity] %type{1}.%method - %message%newline%exception" />
</layout>
Run Code Online (Sandbox Code Playgroud)
我只想保留30天的日志.如何配置log4net自动删除日志?如果没有通过log4net可用,我会有什么解决方案?
先感谢您.
我正在使用log4net.我想在我的GUI中添加一个按钮,当用户单击该按钮时,日志文件将被清除.我怎样才能做到这一点?
非常感谢
我只希望log4net保持让我们说10天的日志文件,因为保持它们无限增长最终会占用我的磁盘空间.我以为我可以通过设置来做到这一点
<maxSizeRollBackups value="10" />
Run Code Online (Sandbox Code Playgroud)
在我的RollingFileAppender上,但没有骰子.我该怎么做呢?