0

我不知道如何在我的解决方案的其他项目中获取 log4net 日志。例如:解决方案 Project1(业务)Project2(DAL)项目... ProjectWeb(此处安装了 glimpse 和 glimpse.log4net)

只有项目 3 中的日志会被 glimpse 捕获,当我在项目 1 和 2 中写入日志时,或更多 glimpse 仍处于打开状态,但日志不会被 glimpse 捕获。

有什么解决办法吗?我尝试了很多配置 web.config 但无法从其他未安装 glimpse 和 glimpse.log4net 的项目中捕获日志。

4

1 回答 1

0

似乎在 nugget 上有一个新版本的 glimps log4net:

Glimpse for log4net 1.1.0 (this version)   283  Sunday, February 7, 2016  

您使用的是 log4net 1.2.11 [2.0.0] 吗?似乎 Glimpse.Log4Net 是针对该版本构建的。

接下来您可以启用 log4net 内部调试,这会显示任何内部异常:

在 log4net 中启用内部调试有两种不同的方法。下面列出了这些。首选方法是在应用程序的配置文件中指定 log4net.Internal.Debug 选项。

• 也可以通过在应用程序的配置文件中设置一个值来启用内部调试(不是 log4net 配置文件,除非 log4net 配置数据嵌入在应用程序的配置文件中)。log4net.Internal.Debug 应用程序设置必须设置为值 true。例如:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

此设置在启动时立即读取,并将导致发出所有内部调试消息。

• 要以编程方式启用log4net 的内部调试,您需要将log4net.Util.LogLog.InternalDebugging 属性设置为true。显然,设置得越早,产生的调试就越多。

内部调试消息被写入控制台和 System.Diagnostics.Trace 系统。如果应用程序没有控制台,那里记录的消息将会丢失。请注意,应用程序可以通过设置 System.Console.Out 来重定向控制台流。默认情况下,跟踪系统会将消息发送到附加的调试器(消息将显示在输出窗口中)。如果进程没有附加调试器,则将消息发送到系统调试器。http://www.sysinternals.com中的 DebugView 等实用程序可用于捕获这些消息。

由于 log4net 内部调试消息被写入 System.Diagnostics.Trace 系统,因此可以将这些消息重定向到本地文件。您可以通过将以下内容添加到应用程序的 .config 文件来定义跟踪侦听器:

<configuration>
    ...

    <system.diagnostics>
        <trace autoflush="true">
            <listeners>
                <add 
                    name="textWriterTraceListener" 
                    type="System.Diagnostics.TextWriterTraceListener" 
                    initializeData="C:\tmp\log4net.txt" />
            </listeners>
        </trace>
    </system.diagnostics>

    ...
</configuration>

确保运行您的应用程序的进程有权写入此文件。

log4net 常见问题

于 2016-03-09T08:20:37.103 回答