0

これらの各ファイルにタイトル行を追加する最も簡単な方法です。テストを参照するたびにタイトル行が追加されるため、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);
        }
    }
 }
4

2 に答える 2

1

次のようなクラスを作成できます:-

public class HeaderOnceAppender : RollingFileAppender 
{
    protected override void WriteHeader()
    {
        if (LockingModel.AcquireLock().Length == 0)
        {
            base.WriteHeader();
        }
    }
于 2013-10-22T18:23:16.543 に答える
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")
}

これは、ファイルが最初に作成されたときに一度だけ追加されます

于 2013-10-22T18:40:09.347 に答える