添加多个 log4net 附加程序
我目前正在尝试将 Microsoft Teaqms 附加程序添加到我的 log4net 文件中。在这个文件中我已经有不同的附加程序。我当前的尝试如下所示:
<log4net debug="true">
<root>
<level value="WARN" />
<appender-ref ref="AdoNetAppender" />
<appender-ref ref="myMicrosoftTeamsAppender" />
</root>
<logger name="ErpLogger" additivity="false">
<level value="INFO"/>
<appender-ref ref="AdoNetAppender"/>
</logger>
<logger name="ChangeHistoryLogger" additivity="false">
<level value="INFO"/>
<appender-ref ref="AdoNetAppender"/>
</logger>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<ReconnectOnError value="true" />
<connectionType
value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionStringName value="LogConnection" />
<commandText
value="INSERT INTO log4netlog ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<threshold value="ALL" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %c %m%n" />
</layout>
</appender>
<appender name="myMicrosoftTeamsAppender" type="log4net.MicrosoftTeams.MicrosoftTeamsAppender, log4net.MicrosoftTeams">
<WebhookUrl value="my Teams URL" />
<titleLayout>
<conversionPattern value="Title - %p: %date [%c]" />
</titleLayout>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %logger - %message" />
</layout>
</appender>
</log4net>
因此,我已经有了一个带有此 Teams 附加程序的测试项目,每次我添加日志时,都会在 Teams 频道中创建一条消息。但现在我试图将其添加到我的实际项目中,但它不起作用。我在 Startup 类中尝试使用以下代码:
log4net.Config.XmlConfigurator.Configure();
var logger = LogManager.GetLogger("myMicrosoftTeamsAppender");
logger.Info("Info.");
logger.Fatal("Fatal!", new ArgumentException("42"));
我该如何解决这个问题? 如果您需要代码的任何其他部分,请告诉我:)
编辑: 我在输出中找到了这一点:
...
log4net: Loading Appender [teams] type: [log4net.MicrosoftTeams.MicrosoftTeamsAppender, log4net.MicrosoftTeams]
log4net:ERROR Could not create Appender [teams] of type [log4net.MicrosoftTeams.MicrosoftTeamsAppender, log4net.MicrosoftTeams]. Reported error follows.
System.IO.FileNotFoundException: Die Datei oder Assembly "log4net.MicrosoftTeams" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
Dateiname: "log4net.MicrosoftTeams"
bei System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
bei System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
bei System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
bei System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
bei log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly, String typeName, Boolean throwOnError, Boolean ignoreCase)
bei log4net.Util.SystemInfo.GetTypeFromString(String typeName, Boolean throwOnError, Boolean ignoreCase)
bei log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
...
更新: 我现在刚刚收到此错误:
log4net:ERROR Appender named [myMicrosoftTeamsAppender] not found.
I'm currently trying to add a Microsoft Teaqms appender to my log4net file. In this file I already have different appenders. My current try looks like this:
<log4net debug="true">
<root>
<level value="WARN" />
<appender-ref ref="AdoNetAppender" />
<appender-ref ref="myMicrosoftTeamsAppender" />
</root>
<logger name="ErpLogger" additivity="false">
<level value="INFO"/>
<appender-ref ref="AdoNetAppender"/>
</logger>
<logger name="ChangeHistoryLogger" additivity="false">
<level value="INFO"/>
<appender-ref ref="AdoNetAppender"/>
</logger>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<ReconnectOnError value="true" />
<connectionType
value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionStringName value="LogConnection" />
<commandText
value="INSERT INTO log4netlog ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<threshold value="ALL" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %c %m%n" />
</layout>
</appender>
<appender name="myMicrosoftTeamsAppender" type="log4net.MicrosoftTeams.MicrosoftTeamsAppender, log4net.MicrosoftTeams">
<WebhookUrl value="my Teams URL" />
<titleLayout>
<conversionPattern value="Title - %p: %date [%c]" />
</titleLayout>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %logger - %message" />
</layout>
</appender>
</log4net>
So I already had an test project with this Teams appender and everytime I added a Log a message in the Teams channel gets created. But now I'm trying to add this in my real project and it doesn't work. I tried it with this code in my Startup class:
log4net.Config.XmlConfigurator.Configure();
var logger = LogManager.GetLogger("myMicrosoftTeamsAppender");
logger.Info("Info.");
logger.Fatal("Fatal!", new ArgumentException("42"));
How can I solve this?
let me know if you need any other parts of the code :)
Edit:
I found this in the Output:
...
log4net: Loading Appender [teams] type: [log4net.MicrosoftTeams.MicrosoftTeamsAppender, log4net.MicrosoftTeams]
log4net:ERROR Could not create Appender [teams] of type [log4net.MicrosoftTeams.MicrosoftTeamsAppender, log4net.MicrosoftTeams]. Reported error follows.
System.IO.FileNotFoundException: Die Datei oder Assembly "log4net.MicrosoftTeams" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
Dateiname: "log4net.MicrosoftTeams"
bei System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
bei System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
bei System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
bei System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
bei log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly, String typeName, Boolean throwOnError, Boolean ignoreCase)
bei log4net.Util.SystemInfo.GetTypeFromString(String typeName, Boolean throwOnError, Boolean ignoreCase)
bei log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
...
Update:
I'm just getting this error now:
log4net:ERROR Appender named [myMicrosoftTeamsAppender] not found.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论