gpt4 book ai didi

c# - .Net 自定义 TraceListener.TraceEvent 未触发

转载 作者:太空狗 更新时间:2023-10-29 21:34:41 24 4
gpt4 key购买 nike

我们有一个自定义的 TraceListener(继承自 System.Diagnostics.TraceListener),用于我们的 ASP.NET Web 应用程序日志记录。它一直运行良好 - 没有问题。然后它突然停止在我们的开发环境中工作(TraceListener.TraceEvent()停止触发)。我们对它停止工作的原因感到困惑。我们真正对代码所做的唯一更改是添加了更多构建配置(Dev、Test、Stage、Prod)。之前,它只有 Debug 和 Release。

我注意到,当我使用调试配置在本地进行测试时,TraceListener.TraceEvent() 被触发得很好。当我切换到另一个构建配置(即测试)时,TraceEvent() 再也不会被触发。这是我的网络 .csproj 文件的片段:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE;DEBUG;SkipPostSharp</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ExcludeGeneratedDebugSymbol>false</ExcludeGeneratedDebugSymbol>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Dev|AnyCPU'">
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Test|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE;DEBUG;SkipPostSharp</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ExcludeGeneratedDebugSymbol>false</ExcludeGeneratedDebugSymbol>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Stage|AnyCPU'">
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Prod|AnyCPU'">
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>

我不确定为什么切换构建配置似乎会关闭我们的日志记录。谁能指出我正确的方向?

最佳答案

解决了这个问题。我调用 System.Diagnostics.TraceSource.TraceEvent() 来广播跟踪事件的代码在另一个项目中。我需要通过以下方式对 THAT 项目启用跟踪:

<DefineConstants>TRACE</DefineConstants>

我错误地认为我需要关注的只是主要目标项目(即 Web 项目)。现在有意义了——调用 System.Diagnostics.TraceSource.TraceEvent() 的项目/程序集必须启用跟踪(通过目标构建配置的项目属性)来广播这些跟踪。然后您的跟踪监听器可以听到它们。 :)

关于c# - .Net 自定义 TraceListener.TraceEvent 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14527942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com