バージョン
Unity 2018.2.8f1 (Scripting Runtime Version : 4.x)
概要
Editor上でログを出力した際に「c:/~/Unity/Editor」配下にログファイルが出力されてしまう。
⇒ Editor上ではプロジェクトの直下、実行ファイルから実行した場合は実行ファイルの直下を相対パスのカレントとして
ログを出力したい
※ログ出力パスは相対パスで指定している
対処方法
1. log4net.xmlのログ出力パスに環境変数を用いる
※仮に「UNITY_LOG_DIR」としておく
<logger name="mylog" additivity="false">
<level value="trace" />
<appender type="log4net.Appender.RollingFileAppender">
<File value="${UNITY_LOG_DIR}/log/my.log" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="5" />
<param name="MaximumFileSize" value="1MB" />
<param name="StaticLogFileName" value="true" />
<param name="CountDirection" value="-1" />
<param name="RollingStyle" value="Size" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %class %line %-5p %m%n" />
</layout>
</appender>
</logger>
2. スクリプトで環境変数「UNITY_LOG_DIR」を追加する(値:カレントディレクトリ)
string configFileName = System.IO.Path.Combine(Application.streamingAssetsPath, "log4net.xml");
string logRootDir = System.Environment.CurrentDirectory;
System.Environment.SetEnvironmentVariable("UNITY_LOG_DIR", logRootDir);
XmlConfigurator.Configure(new System.IO.FileInfo(configFileName));