Oys*_*sio 14 c# dll logging nlog
我正在尝试使用Nlog Refresh 1.0为类库项目实现一个简单的日志.似乎nlog在从dll中实例化时不会创建日志文件.
还有其他方法吗?
我的配置文件如下所示:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
throwExceptions="true">
<targets>
<target name="file" xsi:type="File" fileName="${basedir}/nlog.txt" />
<target name="console" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="file" />
<logger name="*" minlevel="Info" writeTo="console" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)
我知道这个配置没有任何问题,因为它可以在exe项目中运行.
编辑:只是为了澄清:我无法访问使用我的DLL作为插件的调用程序.调用程序实际上是outlook,它使用我的dll作为插件.我想保留一个只与我的dll相关的日志,与outlook本身无关.
Pet*_*ter 32
你必须将nlog.config添加到使用DLL的exe文件的位置!
编辑:您不必修改exe文件只需将nlog.config在同一目录下,如果没有选择我猜你将不得不从代码配置它https://github.com/nlog/NLog/维基/配置-API
NLog将从exe中查找包含DLL的配置文件.因此,每次要使用DLL时,都需要复制NLog的配置文件.
从理论上讲,这是正确的设计模式,因为许多第三方应用程序可以以不同的方式使用您的DLL,并希望将DLL的日志与其日志集中在一起.
在我的情况下(也许是你的),我们想确保100%使用我们自己的配置文件保存DLL的日志,以确保将所有致命错误报告给我们的SqlServer等.因此我们不想要第三方应用程序,用于设置自己的日志记录逻辑.
我们遇到了NLog(或Log4Net)无法找到配置文件的问题,因此没有启动日志记录活动,也没有从NLog或Log4Net打印异常/错误消息.
唯一的选择是使用代码在DLL中配置NLog(或Log4Net).NLog为您提供配置API,以便您可以放弃配置文件.请参阅NLog配置API
在我的例子中,我的DLL中有一个名为"Utils"的静态类,它是从使用我的DLL的任何第三方类调用的(例如它们Utils.doSomething()
).所以我在静态构造函数中配置NLog:
static Utils() // static constructor
{
// Step 1. Create configuration object
var config = new LoggingConfiguration();
// Step 2. Create targets and add them to the configuration
var consoleTarget = new ColoredConsoleTarget();
config.AddTarget("console", consoleTarget);
var fileTarget = new FileTarget();
config.AddTarget("file", fileTarget);
// Step 3. Set target properties
consoleTarget.Layout = @"${date:format=HH\:mm\:ss} ${logger} ${message}";
fileTarget.FileName = @"C:\global-logs\logs.txt";
fileTarget.Layout = "${message}";
// Step 4. Define rules
var rule1 = new LoggingRule("*", LogLevel.Debug, consoleTarget);
config.LoggingRules.Add(rule1);
var rule2 = new LoggingRule("*", LogLevel.Debug, fileTarget);
config.LoggingRules.Add(rule2);
// Step 5. Activate the configuration
LogManager.Configuration = config;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19123 次 |
最近记录: |