[unity, c#]お手軽にログファイルを出力する方法

FileLog.AppendLog("log/test.txt", "ABCDE0123");

log/log.txtABCDE0123 という文字列を出力します。
なお、フォルダがない場合は自動的に生成するので、前もって準備する必要はありません。
(もちろん、準備していても構いません)

using System.IO;

public class FileLog
{
	/// <summary>
	/// ログファイルに追記
	/// </summary>
	/// <param name="filename">ファイル名</param>
	/// <param name="text">追記するテキスト</param>
	public static void AppendLog(string filename, string text)
	{
	    StreamWriter sw = null;
	    try
	    {
	        completeDirectory(Path.GetDirectoryName(filename));
	        sw = new StreamWriter(filename, true, System.Text.Encoding.UTF8);
	        sw.Write(text);
	    }
	    finally
	    {
	        sw?.Close();
	    }
	}

	/// <summary>
	/// 指定ディレクトリが存在しない場合、上から辿って作成する
	/// </summary>
	/// <param name="dir">指定ディレクトリ</param>
	/// <returns>true..作成した</returns>
	static bool completeDirectory(string dir)
	{
	    if (string.IsNullOrEmpty(dir) == true)
	    {
	        return false;
	    }
	    if (Directory.Exists(dir) == false)
	    {
	        completeDirectory(Path.GetDirectoryName(dir));
	        Directory.CreateDirectory(dir);
	        return true;
	    }
	    
	    return false;
	}
}

unity のホームディレクトリ

Assets/ の存在するディレクトリがホームのようです。上の例だとこんな感じ。

Assets/
log/
test.txt

ビルドした後であれば、exe の存在するディレクトリになります。
(スマフォなどは試していないのでわかりませんが、そもそもログファイルは出力しないほうが安全でしょう)

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA