我正在使用log4net的adonet进行数据库调试。日志记录级别设置为错误。数据库日志是为两个运行在不同服务器上的应用程序配置的,这些应用程序写到Oracle表的database.The列的同一个表上,loginId,level.The问题是:
即使日志记录级别被设置为错误,表中也显示了一些信息级别语句,对应级别列也显示为错误。在一些语句之间,登录Id显示与运行application.
编辑:只有在运行多个应用程序实例时,我才会面临这些问题,否则log4net日志记录就可以了。
场景:我在具有不同登录Ids的2个浏览器中浏览了应用程序的发布版本,并在每个浏览器中经历了不同的流程。结果是登录身份被弄乱了。我在代码中从用户会话中获取登录id值,然后存储到log4net.GlobalContext.Properties中。
经过一些研究,我发现log4net.GlobalContext.Properties有一些替代品可以在http://logging.apache.org/log4net/release/manual/contexts.html中找到。我认为应该使用ThreadContext.Properties而不是全局的。
我认为,由于存储到log4net.GlobalContext.Properties中,我正面临这些问题。
问题1:我检查了代码,语句是logger.info。但是在数据库表中,它使用错误级别进行日志记录。
问题2:登录Id代码:
user = (User)Session["User"];
log4net.GlobalContext.Properties["LOGINID"] = user.Login;在web.config中。
如果您认为可以使用ThreadContext.Properties而不是global.properties,那么您可以向我介绍如何将它用于login_id。
发布于 2011-07-10 15:43:28
我开始发表这个评论,但我意识到,虽然我没有足够的细节来给你一个具体的答案,但我可以指出正确的方向。
问题1:如果您在数据库中获得的语句是info语句,但标记为错误语句,则这是代码中的一个问题。您必须告诉log4net日志语句的级别。您可以说"Hello“语句是一个致命的错误。听起来,您的程序正在向日志发送您希望标记为info消息的消息,但它们被标记为错误语句。查看将这些语句发送到日志文件的位置,您应该会看到一个log.ERROR语句。将其更改为log.INFO,您应该就可以了。
问题2:登录ID应该显示谁执行了日志语句。这意味着如果您在另一个帐户下执行某项操作(为了权限),或者如果您使用服务帐户,它将记录该用户,而不是单击鼠标的人。如果您向我们展示如何记录用户信息,我可以更具体地说明如何解决这个问题。
第3期:我不知道你在这里是什么意思。Log4net的行为是自主的。您甚至可以在多台服务器上使用相同的配置,而不会出现问题,如果这是您所指的。
如果您想要一个更完整的答案,更具体地针对您的问题,请张贴log4net配置文件和相关的代码(您正在记录的INFO语句和方法,您的用户ID将是一个好的开始)。
https://stackoverflow.com/questions/6638773
复制相似问题