C#写入日志文件

时间:2010-10-14 08:25:09

标签: c#

我想在我的应用运行时为日志文件写一些事件和例外。日志文件大小限制为N兆字节。当文件大小超过N兆字节时,我想从文件的开头覆盖。由于文件大小为N兆字节,我不想复制到临时文件,然后重命名它。

针对上述问题提出任何建议/方法。

7 个答案:

答案 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轻松配置它们,试一试。