c# - 如何在C#中维护一个月的错误日志?

标签 c# logging error-handling

我正在C#应用程序中维护错误日志,但每天都在。现在我想每月维护一次。如何在一个月前检查文件夹中是否已创建的文件n如果未创建,也要创建它。

public static void WriteError(string errorMessage)
    {
        try
        {
            string path = "~/Error/" + DateTime.Today.ToString("dd-MM-yy") + ".txt";
            if (!File.Exists(System.Web.HttpContext.Current.Server.MapPath(path)))
            {
                File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close();
            }
            using (StreamWriter w = File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path)))
            {
                w.WriteLine("\r\nLog Entry : ");
                w.WriteLine("{0}", DateTime.Now.ToString());
                //w.WriteLine("{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture));
                string err = "Error in: " + System.Web.HttpContext.Current.Request.Url.ToString() +
                              ". Error Message:" + errorMessage;
                w.WriteLine(err);
                w.WriteLine("__________________________");
                w.Flush();
                w.Close();

            }
        }
        catch (Exception ex)
        {
            if (GlobalVar.DebugLevel == Convert.ToInt16(EnDebugLevel.Medium))
            ErrorLog.WriteError(ex.Message);
            //WriteError(ex.Message);
        }

    }

}

请帮助我解决这个问题。
谢谢。

最佳答案

不要处理自己的日志记录,有一些库可以帮助您解决这一问题。查看log4net

您可以使用滚动文件附加程序为您每月自动创建日志。

您可以这样配置:

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender,log4net">      
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<param  name="StaticLogFileName" value="true"/> 
<file type="log4net.Util.PatternString" value="C:\log4net\TestLog_%date{yyyyMM}.log" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <datePattern value="yyyyMM" />
    <maximumFileSize value="1000KB" />
    <maxSizeRollBackups value="3" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level %date{dd MMM yyyy HH:mm:ss,fff} %logger - %message%newline" />
    </layout>
</appender>

然后记录只是要做的事情:
public class LogTest
{
    private static readonly ILog logger = LogManager.GetLogger(typeof(LogTest));

    static void Main(string[] args)
    {
        logger.Error("an error!");
    }
}

要了解有关配置它的更多信息,check out this tutorial

关于c# - 如何在C#中维护一个月的错误日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20852797/

相关文章:

c# - 在 Visual Studio C# 中创建具有动态选项卡数量的选项卡控件

c# - Gridview EmptyDataText ="No data"- 如何向文本 'No data' 添加样式

error-handling - Struts 2 setter未知字段参数

c# - WCF 返回类型 : JsonResult

java - 将 Spark Launcher 输出保存到文件

ruby-on-rails - 在开发环境中静音 Rails memcache 日志记录

logging - 将日志从kubernetes pod上的特定路径转发到stdout

java - 计划任务永远不会引发异常

vba - 如何打开(并保存)Word文档中的所有嵌入式文档?

c# - 使用 C# 的异步 HttpWebRequest 调用