FileLog.AppendLog("log/test.txt", "ABCDE0123");
log/log.txt に ABCDE0123 という文字列を出力します。
なお、フォルダがない場合は自動的に生成するので、前もって準備する必要はありません。
(もちろん、準備していても構いません)
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 の存在するディレクトリになります。
(スマフォなどは試していないのでわかりませんが、そもそもログファイルは出力しないほうが安全でしょう)



