2013-10-22 34 views
0

可以將標題行添加到每個文件的最簡單的方法。我不能把它放在Log()中,因爲它會在每次引用test.Log()的時候添加標題行我想過引用3個新的int字段,並且每次我引用Log1/2/3()它檢查int的值,如果它是1,則添加標題欄,否則不要。我在下面做了一個,但似乎是多餘的,我認爲必須有更好的方法。將標題行添加到日誌文件的最簡單方法

public class Test 
{ 

    public static string File1 = DateTime.Now.ToString("yyyy-MM-dd") + "test1.csv"; 
    public static int a = 0; 
    public static string File2 = DateTime.Now.ToString("yyyy-MM-dd") + "test2.csv"; 
    public static string File3 = DateTime.Now.ToString("yyyy-MM-dd") + "test3.csv";  


    private static object _lockObj = new Object(); 


    public static void Log1(string error, string record) 
    { a++; 
     if(a==1){ 
     lock (_lockObj) 
     {  
      File.AppendAllText(test.File1, "ERROR" + Environment.NewLine)    
      File.AppendAllText(test.File1, error + "," + record + Environment.NewLine); 
     } 
     } 
    else{ 
      File.AppendAllText(test.File1, error + "," + record + Environment.NewLine); 
     } 
    } 

    public static void Log2(string message) 
    { 
     lock (_lockObj) 
     { 
      File.AppendAllText(test.File2, message + Environment.NewLine); 
     } 
    } 

    public static void Log3(Test c) 
    { 
     lock (_lockObj) 
     { 
      File.AppendAllText(test.File3, c + Environment.NewLine); 
     } 
    } 
} 
+0

您是否想在創建文件時在文件頂部放置標題行?如果是這樣,爲什麼不有'if(!System.IO.File.Exists(test.File1)){File.WriteAllText(test.File1,「My Header Line」)}' – Harrison

+0

是的,但如果我添加對我的方法來說,每次我引用方法時,都會添加我只需要一次的方法 – Jt2ouan

回答

0

如果你想創建時,它把標題列在文件的頂部...

if(!System.IO.File.Exists(test.File1)) //if the file doesn't exist 
{ //insert your header at the top 
    File.AppendAllText(test.File1,"My Header Line") 
} 

這隻會在第一次創建文件時追加一次

1

您可以創建這樣一個類: -

public class HeaderOnceAppender : RollingFileAppender 
{ 
    protected override void WriteHeader() 
    { 
     if (LockingModel.AcquireLock().Length == 0) 
     { 
      base.WriteHeader(); 
     } 
    } 
相關問題