使用Log4Net创建ReadOnly日志文件

时间:2011-03-01 10:00:02

标签: c# log4net readonly

我在c#中开发应用程序,创建2个日志文件(.txt文件):一个用于错误,另一个用于用户进行的修改。这两个文件是使用 log4net 创建的。我看到的问题是这些文件可以被编辑,因此被错误地改变了。

我想将这些文件设置为readonly,而log4net仍然可以写入它们。因为如果我只是更改文件中的属性,则不会写下一个日志。

有办法做到这一点吗?

此外,应用程序的用户可以从应用程序中打开此日志文件。为此,我使用下一个代码:

System.IO.FileInfo finfo = new System.IO.FileInfo("path");
if (finfo.Exists)
{
 //finfo.Attributes = System.IO.FileAttributes.ReadOnly; 
 // I don't use the previous line at the moment, because it blocks the followings logs.
 System.Diagnostics.Process.Start("path");
}

这是创建和调用记录器的代码:

public static class CLogger
{
   private static readonly ILog logger = LogManager.GetLogger(typeof(CLogger));

   static CLogger()
   {
      XmlConfigurator.Configure(new System.IO.FileInfo("path to .config file"));
   }

   public static void WriteLog(ELogLevel logLevel, String log)
   {
      if (logLevel.Equals(ELogLevel.DEBUG))
      {
         logger.Debug(log);
      }
      else if (logLevel.Equals(ELogLevel.ERROR))
            .
            .
            .          
      else if (logLevel.Equals(ELogLevel.WARN))
      {
                logger.Warn(log);
      }
   }
}

致电记录器:

CLogger.WriteLog(ELogLevel.ERROR, ex.ToString());

2 个答案:

答案 0 :(得分:2)

基本上,如果应用程序在用户权限下运行,则用户最终必须拥有访问文件的权限:如果他没有,则应用程序也无法写入此文件。< / p>

答案 1 :(得分:0)

我会更改正在写入日志的文件夹的权限。 Web服务器授予读/写权限,所有其他只有Read。