実現したいこと
NLogを本番環境で使いたい
発生している問題・エラーメッセージ
配布アプリケーションではログが出力されない
VS2019でC#アプリケーションを作成しております
エラー等のログを取る為にNlogを活用しており、実際に完成して配布用にインストーラ―を作成して
本番環境でテストしたところ、ログファイルどころかフォルダさえ作成されません
どこか違うところに出力されたかと、検索したが、どこにも出力されてないようです
NLogの設定はconfigで記述しています
ネットを参考にしております
情報通り
ビルドアクションは コンテンツ
出力ディレクトリにコピーは 新しい場合はコピーする
にしております
Nlogは本番環境では使えないということでしょうか?
該当のソースコード
Nlog.config
1<?xml version="1.0" encoding="utf-8" ?> 2<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 autoReload="true" 5 throwExceptions="true" 6 7 <targets> 8 <!-- ファイル --> 9 <target name="logFile" 10 xsi:type="File" 11 encoding="UTF-8" 12 writeBom="true" 13 lineEnding="Default" 14 layout="${longdate} ${level:uppercase=true:padding=-5} [${threadid}] ${logger} - ${message} ${exception:format=tostring}" 15 fileName="C:\MySystem\MyApp\logs\event.log" 16 archiveFileName="C:\MySystem\MyApp\logs\archive\{#}.log" 17 archiveEvery="Day" 18 archiveDateFormat="yyyyMMdd" 19 archiveNumbering="Date" 20 maxArchiveFiles="60" /> 21 </targets> 22 <rules> 23 <logger name="*" minlevel="Info" writeTo="logFile" /> 24 </rules> 25</nlog>
C#
1 public partial class MainForm : Form 2 { 3 static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); 4 5 public MainForm() 6 { 7 InitializeComponent(); 8 9 logger.Info("Test Log"); 10 } 11 }
fileName="C:\MySystem\MyApp\logs\event.log" は実際のパスでしょうか?
やってしまいがちなのはインストール先の「Program Files」など書込権限のないフォルダに書き出そうとするケースが多いと思います。
nlog.configにnlog内部ログを出力するよう以下のように最終行を追記し確認されるのが速いと思います。
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
throwExceptions="true"
internalLogLevel="Trace" internalLogFile="c:\temp\nlog-internal.txt">

回答1件
あなたの回答
tips
プレビュー