現在時刻(OS準拠)を取得してログファイル名に
DateTime.Now.ToString("yyyy.MM.dd.HH.mm.ss") で西暦から秒まで取得できる.西暦など省略もできる.
System.Text.Encoding.GetEncoding("shift_jis"))でテキストのエンコード方式を指定できる.
下記の例ではexeのある階層に"yyyy.MM.dd.HH.mm.ss.log"の空ファイルができる.
using TextWriter writerSync = TextWriter.Synchronized(new StreamWriter(DateTime.Now.ToString("yyyy.MM.dd.HH.mm.ss") + ".log", false, System.Text.Encoding.GetEncoding("shift_jis")));
writerSync.WriteLine(DateTime.Now.ToString("HH.mm.ss:")+"ここにログを記述");
ログを7z(7zip)で圧縮する場合
階層内のログファイルをまとめて圧縮する.
ファイル名は"yyyy.MM.dd.HH.mm.ss.7z"になる.
以下のURLから"7z.exe"を入手しexeと同じ場所に配置する必要がある.
https://sevenzip.osdn.jp/download.html
-sdelは圧縮したら元のファイルを削除
-mx9は圧縮レベルで0は無圧縮(0-9)
".7zを".zipに変えるとzipになる
ExecuteAnotherApp("7z.exe", "a " + DateTime.Now.ToString("yyyy.MM.dd.HH.mm.ss") + ".7z *.log -sdel -mx9", false, true);
private void ExecuteAnotherApp(in string FileName, in string Arguments, bool UseShellExecute, bool CreateNoWindow) {
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo {
FileName = FileName, Arguments = Arguments,
UseShellExecute = UseShellExecute,
CreateNoWindow = CreateNoWindow // コンソール・ウィンドウを開かない
}).WaitForExit();
}