у меня запущена служба windows,
и я хочу, когда я бегу в отладке, чтобы написать на консоль
и когда в качестве службы для просмотра событий.
в PowerShell я установил
New-EventLog –LogName Application –Source "mySource"
У меня есть nlog.config
:
<nlog>
<targets>
<target name="debugger" type="Debugger" layout="${logger}::${message}"/>
<target name="console" type="Console" layout="${logger}::${message}"/>
<target name="file" type="File" layout="${longdate} ${logger}::${message}" fileName="${basedir}/Logs/${shortdate}.log"/>
<target name="eventLog" type="eventlog" layout="${logger}::${message}" source="mySource"/>
</targets>
<rules>
<logger name="" minlevel="Trace" writeTo="debugger"/>
<logger name="" minlevel="Trace" writeTo="console"/>
<logger name="*" minlevel="Trace" writeTo="file"/>
<logger name="*" minlevel="Debug" writeTo="eventLog" />
</rules>
</nlog>
я запускаю init при запуске службы:
public static void InitLogger()
{
NLog.Targets.Target target = null;
target = LogManager.Configuration.FindTargetByName("eventlog");
NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(target, LogLevel.Info);
LogManager.Configuration.Reload();
}
чтобы проверить это, я изменяю его в обоих случаях, чтобы написать в "eventlog"
даже в режиме отладки. но он не работает правильно при использовании средства просмотра событий (VS работает в режиме администратора)
я устанавливаю в каждом классе
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
чего не хватает?