log4net %属性 设置后为空
log4net %property gets null after being set
我已将 log4Net ADONetAppender 设置为 table 称为 log。
log4net 在 Global.asax.cs 文件的 Application_Start() 上配置。
table 及其插页是典型的
INSERT INTO log ([PCDate],[Thread],[Level],[Logger],[Message],[Exception])
VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)
不同之处在于我将我的记录器设置为当前登录系统的应用程序用户。
这在 .config 文件中。
<parameter>
<parameterName value="@logger"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{userName}"/>
</layout>
</parameter>
我在 class 负责处理的用户数据记录的任何插入、更新或删除之前进行日志记录。
logger.Info(strquery);
记录器的消息,是insert/update或删除查询。
记录器设置为当前应用程序记录的用户,例如鲍勃,阿什等
在登录和调试时验证它是否设置为该值。
log4net.ThreadContext.Properties["userName"] = userName;
我也可以将上述语句放在最终将执行 insert/add/delete 的每个 asp 中,但这很麻烦,我们查看 12 个当前文件,更不用说这是不可扩展的。
Where/why 属性 值在 ??
之后是否设置为 null
table 条记录看起来像这样
发生这种情况是因为 ThreadContext
将用户名 保留在当前线程 上,并且正如您从日志中看到的那样,线程在调用之间发生变化:当您设置登录时的值,它对当前请求有效,但下一个请求得到一个新线程,因此一个新的 ThreadContext
并且值消失了。
如果您在会话中存储用户名,则可以在 Global.asax.cs 文件的 Application_AcquireRequestState
事件中设置 ThreadContext 属性。然后它将对整个请求有效。
我已将 log4Net ADONetAppender 设置为 table 称为 log。
log4net 在 Global.asax.cs 文件的 Application_Start() 上配置。
table 及其插页是典型的
INSERT INTO log ([PCDate],[Thread],[Level],[Logger],[Message],[Exception])
VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)
不同之处在于我将我的记录器设置为当前登录系统的应用程序用户。
这在 .config 文件中。
<parameter>
<parameterName value="@logger"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{userName}"/>
</layout>
</parameter>
我在 class 负责处理的用户数据记录的任何插入、更新或删除之前进行日志记录。
logger.Info(strquery);
记录器的消息,是insert/update或删除查询。 记录器设置为当前应用程序记录的用户,例如鲍勃,阿什等 在登录和调试时验证它是否设置为该值。
log4net.ThreadContext.Properties["userName"] = userName;
我也可以将上述语句放在最终将执行 insert/add/delete 的每个 asp 中,但这很麻烦,我们查看 12 个当前文件,更不用说这是不可扩展的。
Where/why 属性 值在 ??
之后是否设置为 null
table 条记录看起来像这样
发生这种情况是因为 ThreadContext
将用户名 保留在当前线程 上,并且正如您从日志中看到的那样,线程在调用之间发生变化:当您设置登录时的值,它对当前请求有效,但下一个请求得到一个新线程,因此一个新的 ThreadContext
并且值消失了。
如果您在会话中存储用户名,则可以在 Global.asax.cs 文件的 Application_AcquireRequestState
事件中设置 ThreadContext 属性。然后它将对整个请求有效。