问题标签 [adonetappender]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
800 浏览

c# - 带有自定义数据的 log4net adonetappender,如果它包含 DataTime 数据,则无法写入日志

我需要将自定义数据记录到 Db 并按照本教程进行操作: http: //stephenjamescode.blogspot.it/2014/01/logging-custom-objects-and-fields-with.html

我实现了一个ReflectionPatternConverter ,它使我能够记录我需要的任何自定义数据。这是代码:

反射模式转换器

我使用一个自定义ReflectionPatternLayout,除了注册ReflectionPatternConverter.

反射图案布局

我想记录这个自定义数据类:

自定义日志数据

所以我用这个配置文件(片段)配置了 log4net:

每当我尝试编写日志条目时,都会出现此异常(log4net 的调试模式设置为 true):

log4net:错误 [AdoNetAppender] 错误代码:GenericFailure。写入数据库 log4net 时出现异常:错误 [AdoNetAppender] 错误代码:GenericFailure。写入数据库时​​出现异常 System.FormatException:无法将参数值从 String 转换为 DateTime。---> System.FormatException:字符串未被识别为有效的日期时间......

(异常信息可能不同,我是从意大利语翻译过来的)。
有趣的是,如果我将当前线程区域设置为CultureInfo.InvariantCulture

所以我高度怀疑这是日期时间格式的愚蠢语言环境问题。
如何将日志记录与客户端区域设置分离?

0 投票
2 回答
1630 浏览

c# - 在带有 log4net 的自定义 AdoNetAppender 中使用不同的 ConnectionString

我想使用我将在运行时定义的 ConnectionString。我找到了很多例子,但我无法让它发挥作用。

我创建了一个自定义 AdoNetAppender:

我有以下配置:

我的记录器在配置文件中是这样定义的:

最后,为了让我的记录器记录我正在做的代码:

当我尝试将连接字符串“硬编码”到我的配置中时,它正在工作。但我不能这样做,因为我需要一个不同的 ConnectionString 取决于一些变量。我放在自定义附加程序中的属性 ConnectionString 永远不会被调用。知道我在哪里遗漏了什么吗?

0 投票
1 回答
1487 浏览

c# - Log4Net AdoNetAppender- 截断表/删除旧记录/限制数据库大小

有效限制 Log4Net 登录的表大小的简单方法是什么?

例如删除旧记录,或在记录总数达到预定义限制时删除,或者当表(或 DB)大小达到大小限制时删除

(编辑)因为我们有两种类型的标记数据库(MySQL / MSSQL)的客户,所以从维护 POV 来看,单点解决方案会更好。

我们考虑过使用一些代码(使用 NHibernate)来定期执行@samy 建议的操作。但是性能有效的 Log4Net 解决方案总是更好。

0 投票
1 回答
116 浏览

c# - AdoNetAppender 从另一个文件获取连接字符串值

我有多个 Web 服务,它们当前使用 log4net 将其 info\error 消息记录到文件中。我希望现在在数据库中完成日志记录。我已经阅读了有关 AdoNetAppender 的信息,并且可以看到给定一些参数,例如命令文本和连接字符串,它可以很容易地完成。

但是 - 我的连接字符串与 log4net 不在同一个 web.config 中,而是取自磁盘中的 config.ini。我可以配置 AdoNetAppender 以便从那里提取连接字符串的值吗?

提前致谢

0 投票
1 回答
211 浏览

visual-studio - 在本地运行时没有实例化附加程序

我有一个使用 log4net 的 Web 应用程序。我的 Web 应用程序已部署到 Azure,并且可以在那里完美运行。但是,当我通过 VS2013(更新 4)在本地运行它时,log4net 不会实例化AdoNetAppender.

我通过中断所有抛出的异常来检查异常,没有抛出任何异常,我激活了内部 log4net 调试,调试输出中没有显示任何异常。

我也添加<trust level="Full"/>到我的web.config,什么都没有...

我再次难住了,它可以在 Azure 上运行,但不能在本地运行。有任何想法吗?谢谢!

编辑这是我的web.config(仅相关行)

更新 2

我发现虽然log4net配置正确,但调用会LogManager.GetLogger("...")返回一个没有附加程序的记录器。但是,如果我进一步检查层次结构,我可以AdoNetAppender在那里看到我,并且在XmlConfigurator.Configure()运行时它也会输出以下内容log4net: Adding appender named [ADONetAppender] to logger [root].......

所以问题归结为(这仅在本地发生,而不是在生产中)从返回的对象LogManager.GetLogger(...)不包含任何附加程序。

解决了

请参阅下面接受的答案。事实证明,我真正缺少的只是XmlConfigurator.Configure()在我的Application_Start方法中调用。我提供的所有其他“证据”都是正常行为,而我在本地没有看到任何日志消息的原因是我的本地数据库和生产数据库之间的日志表架构之间存在细微的无意差异。

0 投票
1 回答
6194 浏览

c# - Log4Net 错误:“找不到配置部分 log4net”AdoNetAppender

我做了一个新项目只是为了测试。我正在尝试使用Log4Net写入我的数据库。但是我收到了这个错误。我认为我的配置中缺少某些东西。

装配信息.cs

日志记录.config

Form1.cs

0 投票
0 回答
80 浏览

xml - 具有多线程的 Log4Net AdoNetAppender Xml 列类型失败并出现 ORA-31011:XML 解析失败

背景:我们正在使用 AdoNetAppender 登录 Oracle 数据库。有 5 个单元测试,所有这些单元测试都将虚拟错误消息记录到同一个表中。Logger 实例由 Unity 解析,生命周期为 PerThreadLifetimeManager。

登录数据库的代码如下

并将日志信息映射到ThreadContext,如下图:

我们面临的问题是 LogPropertiesXml。即使是格式良好的 Xml 也无法使用 Task.Factory.StartNew 登录到数据库。如果消除了 Tasking,则所有 5 个单元测试都可以工作。否则只有 1-2 个测试随机登录到数据库,其他测试失败并出现此错误

ORA-19202:XML 处理 LPX-00210 中发生错误:预期 '<' 而不是 '(' 在 Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck) 在 Oracle.DataAccess 的 Object src, String procedure, Boolean bCheck, Int32 isRecoverable)。 Client.OracleCommand.ExecuteNonQuery() 在 log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran, LoggingEvent[] events) 在 log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events)

我在这里做错了什么?

0 投票
1 回答
366 浏览

variables - log4net adonetappender 变量为空

在谷歌搜索这个似乎永远的东西之后,我求助于在这里问这个问题。

我在 log4net adonetappender 中添加了一个自定义字段和变量。然而,在重新工作并尝试了在谷歌前 4 页中找到的几乎所有建议之后,该变量仍然为空。

任何想法为什么会发生这种情况以及任何帮助的建议?

输出

应用程序配置

设置变量的 C# 代码

0 投票
1 回答
445 浏览

connection-string - AdoNetAppender 中的 log4net 连接类型无效

我已经实现了 log4net 版本 1.2.13.0,没有出现重大问题。(.Net 版本 4.51 C#4)我在文档之后添加了一个 AdoNetAppender。

但这是我的一段代码,造成了一些麻烦:

我有一条警告消息不会阻止我的应用程序,但很烦人且非常令人不安:

'value' 属性无效 - 值 'System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 根据其数据类型 'connectionTypeTypes' 无效 - 枚举约束失败的。

摆脱此消息的问题和解决方案在哪里?

提前谢谢了。

0 投票
2 回答
1538 浏览

c# - log4net AdoNetAppender - SqlParameterCollection 不包含参数

在我的一个项目中,我收到此错误:

这是 appender 配置(在其他项目中完美运行):

如果有人遇到这个问题,我将非常感谢您的帮助