使用NLog进行日志记录的最佳或最有用的配置是什么?(只要它们有用,它们可以是简单的也可以是复杂的.)
我正在考虑一些示例,例如自动滚动特定大小的日志文件,更改布局(日志消息)是否存在异常,一旦发生错误就升级日志级别等.
以下是一些链接:
如何在标准跟踪,Logger.NET,企业库,log4net或Ukadc.Diagnostics之间进行选择?
是否存在一个比另一个更合适的情况?那会是什么?(ASP.NET,控制台应用,Azure云,SOHO,企业...)
有什么好处或缺点?
我是否错过了其他主要的日志记录框架?
我正在编写一个工具,它将检查整个网络中工作站的运行状况,并根据发现的问题进行修复.我想创建一个日志文件,因为应用程序正在运行每台计算机上的任务/检查.我现在只想让它在一台机器上运行,但是它会一次扫描100多台机器(螺纹外出).
创建日志文件的最佳方法是什么?
我正在考虑使用a List<string>在内存中构建日志文件,然后在完成后将其输出到文件中.
我只是觉得可能有更好的方法吗?
我需要在我的项目中使用日志库,并考虑在Enterprise Logging Block与NLog vs log4net之间.我在比较中发现了一些链接,但大多数链接已经很老了,并抱怨没有新版本的log4net等等.
任何人都建议根据当前数据在易用性,易配置性,性能,可扩展性等方面哪一个更好.
我正在努力在log4net中编写一个AND条件过滤器.如果它是nLog,我可以这样写:
<logger name="*" minlevel="Info" xsi:type="NLogLoggerRule" writeTo="FooLogger" >
<filters>
<when condition="equals('${event-context:item=UserID}', 'TESTUSER')
and equals('${event-context:item=URL}','/foo/foobar.aspx')"
action="Ignore" />
</filters>
</logger>
Run Code Online (Sandbox Code Playgroud)
我不知道如何在log4net中编写相同的过滤器.在写一个条件时,我迄今为止取得了成功:
<appender>
....
<filter type="log4net.Filter.PropertyFilter">
<key value="URL" />
<stringToMatch value="/foo/foobar.aspx" />
<acceptOnMatch value="false" />
</filter>
</appender>
Run Code Online (Sandbox Code Playgroud)
如何使用log4net过滤器编写AND条件?请帮忙.
我有这样的appender设置
<appender name="Scheduler_Appender" type="log4net.Appender.RollingFileAppender">
<file value="c:\temp\ApplicationLog.txt"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd"/>
<appendToFile value="true"/>
<staticLogFileName value="true"/>
<layout type="MinLayout">
<locationInfo value="true"/>
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
首次创建日志文件时,文件名只是ApplicationLog.txt,这是正确的.
但是当记录滚动时 - 生成的文件名是ApplicationLog.txt20100323(例如),而不是ApplicationLog20100323.txt
如何更改配置,以便将文件滚动到[FileName] [Date].[ext]而不是[FileName].[ext] [Date]
谢谢
更新
我尝试了这个,只是一些实验,但现在由于某种原因它生成带有.pxp扩展名的文件......
<appender name="Scheduler_Appender" type="log4net.Appender.RollingFileAppender">
<file value="c:\temp\Scheduler"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd.txt"/>
<appendToFile value="true"/>
<staticLogFileName value="false"/>
<layout type="MinLayout">
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud) 对于我们使用Enterprise Library 5的项目,将使用几个块.我倾向于使用Logging应用程序块,因为它内置于此框架中.但我确实看到了很多关于log4net的建议,那么人们选择做什么,如果选择log4net,你为什么选择其他一些?
谢谢.
我的(本地,windows/mono)应用程序将重要事件记录到文本文件中.在突然崩溃/失败/强行退出的情况下,没有数据应保持不成文(尽可能).因此,我目前使用简单的追加文本文件方法:
Public Shared Sub LogAppEvent(ByVal EventData As String)
Dim Config As ConfigHandler = ConfigHandler.GetSingleton()
Dim AppLog As New IO.StreamWriter(Config.GetUserFilesRootDir() & ConfigOptions.AppLogName, True)
AppLog.WriteLine(String.Format("[{0}] {1}", Date.Now.ToString(), EventData))
AppLog.Close()
End Sub
Run Code Online (Sandbox Code Playgroud)
这是非常次优的,但是日志事件非常罕见.你会建议搬到System.Diagnostics伐木班吗?
或者你可以建议另一个解决方案?
我想知道什么是用于存储Windows服务的配置文件(ini,xml)和日志文件的最佳文件夹.
根据msdn上的特殊文件夹列表,似乎CommonApplicationData(= C:\ProgramData在Windows Vista/7/Server 2008(R2)上)是最适合的地方:
CommonApplicationData =用作所有用户使用的特定于应用程序的数据的公共存储库的目录.
还有其他建议吗?
我想在我的程序中创建一个日志文件.
我的日志模式应包含:日志类型,日期时间,线程名称,方法名称,日志详细信息等...
您建议使用哪种日志模式?
是否有任何可接受的日志模式?例如"跟踪日志模式","事件日志模式"等...
我喜欢NLOG由于描述的多种原因 https://robertmccarter.com/switching-to-nlog 和
但是我考虑 https://github.com/ServiceStack/ServiceStack 和 https://nuget.org/packages/ServiceStack.Logging.NLog以保持通用接口和将来切换到其他提供商的能力.
是否有人知道使用ServiceStack.Logging.NLog而不是直接NLog调用的任何缺点/限制?
它会导致任何重要的性能下降吗?
直接调用NLog记录器时是否可以使用任何功能,但ServiceStack不支持?