【问题标题】:Create a ReadOnly log file with Log4Net使用 Log4Net 创建只读日志文件
【发布时间】:2011-03-01 18:03:21
【问题描述】:

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

我想将此文件设置为只读,并且 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());

【问题讨论】:

标签: c# log4net readonly


【解决方案1】:

基本上,如果应用程序在用户的权限下运行,那么用户最终必须拥有访问文件的权限:如果他没有,应用程序也无法写入这些文件。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 如果它是一个网络服务器应用程序,那么你是对的。但对我来说主要的问题是:为什么用户可以访问网络服务器?
    • 我同意这个问题,我试图为这个问题提供一个快速的解决方案。
    • @Sascha, @Niklas Ringdahl:它是内部网络中的应用程序,因此 .config 文件和创建的日志文件位于网络路径中。但是,如果文件保持为读/写状态,每个人都可能错误地修改它们。如果它们是只读的,则应用程序无法写入更多日志。
    • 应用在哪个账户下运行?用户还是系统帐户?
    • 应用程序检查 windows 用户登录以确定是否允许用户启动应用程序。但是一旦应用程序打开,访问文件的代码就是上面的代码(log4net)
    猜你喜欢
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2014-07-29
    相关资源
    最近更新 更多