2011-03-01 101 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

基本上,如果應用程序在用戶的權限下運行,那麼用戶最終必須有權訪問這些文件:如果他沒有,應用程序也不能寫入這些文件。

相關問題