У меня есть надстройка C# для Outlook (надстройка Express), из которой я пытаюсь сохранить некоторые данные журнала, но не создается файл журнала даже если вызовы регистратора не прерываются. Я использую VS 2013 в среде Win 10.NLog не записывается в файл журнала при вызове из надстройки Outlook
Мой NLog.Config файл (хранится в папке OutlookAddin \ Bin \ Debug, в том же месте, что и 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>
код в Add-In это заявление:
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, появляется сообщение о том, что файл журнала не существует, хотя целевой файл верен, что указывает, что файл конфигурации был успешно прочитан.
Тот же код работает, как ожидается, если он включен в исполняемый файл.
Пожалуйста, отметьте один, как ответ :) – Julian