ログデータを保存しようとしているのに、ログファイルを作成しようとしていないOutlook用アドイン(アドインエクスプレス)がありますロガーへの呼び出しは失敗しません。私はWin 10環境でVS 2013を使用しています。Outlookアドインから呼び出されたときにNLogがログファイルに書き込まない
マイNLog.Configは以下のとおりである(フォルダOutlookAddin \ binに\デバッグ、OutlookAddIn.dll.configと同じ場所に保存されている)ファイル:
<?xml version="1.0" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="file" xsi:type="File"
layout="${longdate} ${logger} ${message}"
fileName="${specialfolder:ApplicationData}\FindAlike\NewMails.txt"
keepFileOpen="false"
encoding="iso-8859-2" />
</targets>
<rules>
<logger name="*" writeTo="file" />
</rules>
コードアドイン内宣言された:テスト・ログ・ファイル書き込み用の
public AddinModule()
{
Application.EnableVisualStyles();
InitializeComponent();
// Please add any initialization code to the AddinInitialize event handler
}
private ADXOutlookAppEvents adxOutlookEvents;
private DateTime LastReceivedDate = DateTime.Now;
private Timer mailCheckTimer;
public static RegistryKey SoftwareKey = Registry.CurrentUser.OpenSubKey("Software", true);
public static RegistryKey AppNameKey = SoftwareKey.CreateSubKey("FindAlike");
public static Logger logger = LogManager.GetCurrentClassLogger();
、ルーチンは次のとおりです。
public static void TestNLog()
{
try
{
NLog.LogManager.ThrowExceptions = true;
logger.Info("test1");
logger.Warn("test2");
logger.Error("test3");
var fileTarget1 = (FileTarget)NLog.LogManager.Configuration.FindTargetByName("file");
var logEventInfo = new LogEventInfo { TimeStamp = DateTime.Now };
string fileName = fileTarget1.FileName.Render(logEventInfo);
if (!System.IO.File.Exists(fileName))
throw new Exception("Log file does not exist.");
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}
TestNLogが呼び出されると、ログファイルが存在しないというメッセージが表示されますが、ターゲットファイルが正しくあり、設定ファイルが正常に読み取られたことを示しています。
実行可能ファイルに含まれている場合、同じコードが期待どおりに機能します。
答えとして1をマークしてください:)アプローチ2の – Julian