我正在使用NLog,并希望使用非标准目录进行日志记录。我的应用程序在加载期间将加载一个“LogFileLocation”参数,该参数存储日志文件目录的位置。
是否可以使用非标准的日志文件目录?并且,如果是这样,如果我设置了autoReload =“true”,我还可以在运行时更新它吗?
答案 0 :(得分:0)
首先,我会按惯例将应用程序的任何部分的日志文件保留在默认位置,因为这是其他开发人员所期望的。
我在WinForms ApplicationEvents中使用vb.net“设置”做了类似的操作,从具有混合结果的用户特定值中提取值(应用程序升级导致问题)。在一天结束的时候逻辑不能很好地转化为C#,如果那是你的鱼。
我假设您已通过app.config Nlog config settings,如下所示。我假设您可以在父app.config级别对该值进行硬编码,以使其适用于您的应用程序的管理和服务组件。
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="logDirectory"
value="${basedir}/logs/${date:format=yyyyMMdd}/"/>
<targets async="true">
<target name="AppFullLog"
layout="${longdate} ${level:uppercase=true} ${logger} on ${machinename} by ${windows-identity}.${newline}${message}${newline}Stack:${stacktrace}${newline}-------"
xsi:type="File"
fileName="${logDirectory}CadiFull.log">
</target>
<target name="AppErrorLog"
layout="${longdate} ${level:uppercase=true} ${logger} on ${machinename} by ${windows-identity}.${newline}${message}${newline}Stack:${stacktrace}${newline}-------"
xsi:type="File"
fileName="${logDirectory}CadiErrors.log">
</target>
</targets>
<rules>
<logger name="*"
writeTo="AppFullLog" />
<logger name="*"
levels="Error,Fatal"
writeTo="AppErrorLog" />
</rules>
最后,如果您尝试将所有错误日志放入一个位置,则始终可以将数据发送到服务器数据库。 Nlog提供了实现这一目标的选项。