1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[C#] もうとにかく今すぐデバッグのためのログを出力したいときのクラス/メソッド

Last updated at Posted at 2020-11-12

もくじ

やりたいこと

C#でアプリをつくっているときに、もう何でもいいから今すぐ簡単にログを出力させて、それを見たい。
例えば、VisualStudioでデバッグ実行がしたくてもできないけど、どの経路を通ったかを知りたくて、でもMessageBoxは出したくない、というとき。

やり方

下記のような簡単なログ用クラスを貼り付けて使用する。

public static class LogOnDesktopのクラスがそれ。

終わったら、クラスごと消す。

namespace ConsoleApp1
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            var t1 = Task.Run(() => log("thread1"));
            var t2 = Task.Run(() => log("thread2"));
            await Task.WhenAll(t1, t2);
        }

        static void log(string str)
        {
            for (int i = 0; i < 10; i++)
            {
                LogOnDesktop.WriteLine($"{str} {i}");
            }
        }
    }
    
    public static class LogOnDesktop
    {
        private static object lockObj = new object();
        private static string logPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\mylog.log";

        public static void WriteLine(string line)
        {
            lock (lockObj)
            {
                var now = DateTime.Now.ToString("HH:mm:ss.fff");
                var thid = Thread.CurrentThread.ManagedThreadId;

                File.AppendAllText(logPath, $"{now} {thid} {line}{Environment.NewLine}");
            }
        }
    }
}

で、このクラスのWriteLogToDesktopLogFile()を実行するとデスクトップにlog.logファイルができるが、そいつを以前書いた「Tailっぽくログを監視できるバッチファイル」を使ってリアルタイムで見てやれば、簡易的にログ監視体制の完成。

もしログに、ログを残したメソッド名を記録したければ、WriteLogToDesktopLogFile()を呼ぶときに下記のようにしてやればよい。

// using System.Reflection;
LogOnDesktop.WriteLogToDesktopLogFile(MethodBase.GetCurrentMethod().Name);

追記

下記ページのような方法もよさそう。

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?