我正在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/