2011-03-01 98 views
0

我正在开发创建2个日志文件(.txt文件)的c#中的应用程序:一个用于错误,另一个用于用户进行的修改。这两个文件是用log4net创建的。我看到的问题是这个文件可以被编辑,并且被错误地修改。使用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()); 
+1

可能有[使用Log4Net创建ReadOnly日志文件并单独登录2个文件]的副本(http://stackoverflow.com/questions/5117927/create-a-readonly-log-file-with-log4net-and-单独登录2个文件) – 2011-03-01 10:05:00

回答

0

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

+0

如果它是一个Web服务器应用程序,那么你是对的。但是对我来说,主要的问题是:为什么用户可以访问Web服务器? – Sascha 2011-03-01 10:04:17

+0

我同意这个问题,我试图为问题提供一个快速解决方案。 – 2011-03-01 11:20:54

+0

@Sascha,@Niklas Ringdahl:它是内部网络中的应用程序,因此.config文件和创建的日志文件位于网络路径中。但是,如果文件保持为读/写,则每个人都可以错误地修改它们。如果它们是只读的,则应用程序无法写入更多日志。 – pepersview 2011-03-01 13:37:51

2

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

相关问题