我想在我的应用运行时为日志文件写一些事件和例外。日志文件大小限制为N兆字节。当文件大小超过N兆字节时,我想从文件的开头覆盖。由于文件大小为N兆字节,我不想复制到临时文件,然后重命名它。
针对上述问题提出任何建议/方法。
答案 0 :(得分:2)
尝试Microsoft的Log4Not或Enterprise Library日志记录组件
答案 1 :(得分:2)
使用Log4net(http://logging.apache.org/log4net/index.html)进行操作
logger.Debug("Here is a debug log.");
logger.Info("... and an Info log.");
logger.Warn("... and a warning.");
logger.Error("... and an error.");
logger.Fatal("... and a fatal error.");
或使用企业库(http://msdn.microsoft.com/en-us/library/ff648951.aspx)来执行此操作
LogEntry entry = new LogEntry()
{
Message = "Hello Ent. Lib. Logging"
};
Logger.Write(entry);
两者都可以配置为通过web / app.config指向文件。
答案 2 :(得分:2)
查看log4net! 它非常灵活,允许您在运行时更改日志记录的行为(在何处记录/如何记录/记录内容...)。
RollingFileAppender
允许您在达到给定的大小限制时定义行为,并且它可能可以回答您的问题。
答案 3 :(得分:2)
float N = 1; //Log File size in MB
FileInfo logFile = new FileInfo("c:\\myLogFile.txt");
if (logFile.Length > 1024 * N)
{
logFile.Delete();
logFile.Create();
}
using (StreamWriter logStream = logFile.AppendText())
logStream.Write("String to write");
最简单的方式,可能是最糟糕的方式。 编辑反映Hans Kesting的评论。
答案 4 :(得分:1)
作为Log4Net的替代方案,我可以推荐NLog 我们发现它在更简单的日志类之后更加透明和易于使用。
答案 5 :(得分:0)
如果您的问题涉及写.svclog文件的.Net跟踪侦听器,则答案为否:您无法将其配置为在达到特定限制时从头开始编写。
但是,Microsoft有一个solution called Circular Tracing,您可以尝试避免日志文件无限制地增长。
答案 6 :(得分:0)
为什么不尝试Microsoft的企业日志库,它将为您提供比旧的FileIO操作或log4net更多的功能。
Microsoft发布了5.0版本的企业库,它可以帮助您编写日志并使用UI轻松配置它们,试一试。