【问题标题】:easiest way to add title row to log file将标题行添加到日志文件的最简单方法
【发布时间】:2013-10-22 18:19:49
【问题描述】:

为每个文件添加标题行的最简单方法。我不能把它放在 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);
        }
    }
 }

【问题讨论】:

  • 创建文件时是否只想在文件顶部放置标题行?如果是这样,为什么不拥有if(!System.IO.File.Exists(test.File1)){File.WriteAllText(test.File1,"My Header Line")}
  • 是的,但如果我将它添加到我的方法中,它会在我每次引用该方法时添加,我只想要一次

标签: c# file logging locking


【解决方案1】:

你可以像这样创建一个类:-

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

【讨论】:

    【解决方案2】:

    如果您想在创建文件时将标题行放在文件顶部...

    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")
    }
    

    这只会在第一次创建文件时追加一次

    【讨论】:

      猜你喜欢
      • 2019-01-10
      • 2013-06-11
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多