0

いくつかの機能を備えたクラス ライブラリを作成し、実行されたステップを追跡するためにログ ファイルを維持しています。このクラス ライブラリをデバッグ モードで実行すると、ログ ファイルが正常に作成されます。

ただし、そのクラス ライブラリの tlb ファイルを作成し、システムにインストールした後に cab ファイルを作成しました。現在、そのライブラリを使用しています。すべての機能が正常に動作していますが、ログ ファイルのみが書き込まれません。

コードを使用してログ ファイルを作成しました。

 public static void LogTrace(string LogMessage)
    {
        try
        {

            string LogError = string.Empty;
            String DirPath = string.Empty;

            DirPath= Convert.ToString(ConfigurationSettings.AppSettings["DirPath"]);
            LogError = Convert.ToString(ConfigurationSettings.AppSettings["LogError"]);

            //if logging is not required
            if (LogError.ToLower() == "true")
            {
                if (DirPath == null || DirPath == string.Empty)
                    DirPath = @"C:\LogAndError";

                if (LogError == null || LogError == string.Empty)
                    LogError = "True";

                //creation of date wise file name

                string LogFileName = DirPath + "\\Log_ " + DateTime.Now.ToString("MM_dd_yyyy") + ".txt";
                createLogAndErrorFile(DirPath);

                    StreamWriter streamWriter = null;
                    streamWriter = new StreamWriter(LogFileName, true);
                    streamWriter.WriteLine("Time :" + DateTime.Now.ToString() + "  ");
                    streamWriter.WriteLine(LogMessage);
                    streamWriter.WriteLine(Environment.NewLine);
                    streamWriter.Flush();
                    streamWriter.Close();

            }
        }
        catch
        {
            //We are not throwing any exception because all the exeption is logged using this method
            //and throwing the exception could lead to recursive call of function.
        }
    }
    public static void createLogAndErrorFile(string DirPath)
    {
        if (!Directory.Exists(DirPath))
            Directory.CreateDirectory(DirPath);
    }
}

何か足りないのですか?

4

1 に答える 1

0

ファイルにアクセスする権限があることを確認してください

コードを try catch ブロックに配置し、例外をキャプチャします。 using ブロックを使用することをお勧めします

try
{

           var path = Path.Combine(DirPath, string.Concat("\\Log_",DateTime.Now.ToString("MM_dd_yyyy"), ".txt"));

            using (StreamWriter streamWriter = new StreamWriter(path))
            {
                streamWriter.WriteLine("Time :" + DateTime.Now.ToString() + "  ");
                streamWriter.WriteLine(LogMessage);
                streamWriter.WriteLine(Environment.NewLine);

            }


}
catch(Exception ex)
{
   Console.Write(ex.Message);
   throw ex;
}
于 2012-09-03T17:51:02.563 に答える