根据方法名称过滤 log4net - 不太明白

2024-02-03

我使用 log4net 来记录我的 Web 应用程序的进度,使用 Log4PostSharp 来 AOP 注入所有方法。这达到了记录(几乎)所有内容的预期效果,并且很好。

我现在需要将 Page_Load 方法记录到文件/控制台。显然,我可以限制 log4postsharp 类来做到这一点,但那样我就会失去所有其他日志记录。

我一直在查看 log4net 中的过滤器,从 StringMatch 过滤器开始,但这只查看正在记录的消息,并且我在方法名称之后。这让我进入了 PropertyFilter,但仍然没有任何乐趣。我的 log4net.config 片段如下:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <filter type="log4net.Filter.PropertyFilter">
    <key value="LocationInfo.MethodName"/>
    <stringToMatch value="Page_Load"/>
  </filter>
  <filter type="log4net.Filter.DenyAllFilter" />
  <file value="d:\\xxxx\\yyyyy\\zzzzLog"/>

正如您所看到的,我尝试通过 LocationInfo 输入日志记录事件的 MethodName,但我仍然记录了所有内容。编辑:正如评论中提到的,我现在已经包含了在 RTFM 之后添加的 DenyAllFilter ;-)

有人可以帮忙吗?

谢谢你,

Mike K.


据我所知 log4net 不知道property 位置信息.方法名称。我没有使用 Log4PostSharp,因此我无法确定 Log4PostSharp 是否会创建此属性。

我会像这样编写自己的过滤器来按方法名称进行过滤(省略正则表达式部分):

public class MethodNameFilter : StringMatchFilter
{       
     override public FilterDecision Decide(LoggingEvent loggingEvent) 
     {
         if (loggingEvent == null)
         {
              throw new ArgumentNullException("loggingEvent");
         }

         var locationInfo = loggingEvent.LocationInformation;

         // Check if we have been setup to filter
         if (locationInfo == null || (m_stringToMatch == null && m_regexToMatch == null))
         {
             // We cannot filter so allow the filter chain
             // to continue processing
              return FilterDecision.Neutral;
         }

         if (m_stringToMatch != null)
         {
             // Check substring match
             if (locationInfo.MethodName.IndexOf(m_stringToMatch) == -1) 
             {
                  // No match, continue processing
                  return FilterDecision.Neutral;
             }

             // we've got a match
             if (m_acceptOnMatch) 
             {
                  return FilterDecision.Accept;
             } 
             return FilterDecision.Deny;
         }
         return FilterDecision.Neutral;
    }
} 

注意:访问LocationInfo是昂贵的并对性能产生显着影响。您可以考虑修改 Log4PostSharp 以在编织过程中提取方法名称并将其存储在某个属性中。在这种情况下,您可以按预期使用属性过滤器,并且不会对性能产生任何影响。不确定这是否真的有效,但我希望这是可能的。

配置看起来像这样:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
     <filter type="YourNameSpace.MethodNameFilter">
         <stringToMatch value="Page_Load"/>
     </filter>
     <filter type="log4net.Filter.DenyAllFilter" />
     <file value="d:\\xxxx\\yyyyy\\zzzzLog"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据方法名称过滤 log4net - 不太明白 的相关文章

  • 如何阻止gridview列自动编码html实体

    我对 ASP NET 相当陌生 在使用 gridview 时遇到了问题 我添加了一些包含 符号的条目 例如 PR Murphy Associates 在将数据插入数据库之前 我没有对数据进行任何编码 当网格视图更改为编辑模式时 我的文本如下
  • 对齐 GridView 中的行值

    我需要在 asp net 3 5 中右对齐 gridview 列中的值 我怎样才能做到这一点
  • System.Web.HttpContext 无法识别

    我有一个带有 C Web 应用程序的 ASP NET 我创建的类之一需要使用 HttpContext 根据http msdn microsoft com en us library system web httpcontext v vs 9
  • 如何在C#和Azure启动任务中自动更新EXE项目?

    我在我的天蓝色相关项目中面临着一个关键且有趣的问题 我创建了一个 Web 应用程序 用户可以从那里下载一个插件 C 中的 EXE 项目 并在解压后上传 EXE 和配置文件到部署在 Azure 平台上的应用程序的启动任务 并且该 exe 定期
  • 如何对ArrayList(int)进行排序

    我怎样才能排序Arraylist按升序和降序排列 例子 ArrayList list new ArrayList list Add 2 list Add 8 list Add 0 list Add 1 如何按升序和降序对上面的列表进行排序
  • 运行代码隐藏的表行 onclick 事件

    我继承了一个 ASP NET 项目 该项目的 HTML 设计很糟糕 在一个部分中 tr 标签用标签包裹起来 以允许 单击该行查看信息 功能 代码是 tr
  • RegularExpressionValidator 限制输入长度而不限制字符类型

    我正在尝试使用RegularExpressionValidator验证一个TextBox输入长度 我可以使用它 但它只接受字母和数字 我想允许any个字符 唯一的检查是不超过 25 个字符
  • Response.Write - Internet Explorer 中的文件名编码错误

    我使用以下代码将文件从服务器发送到客户端 Response AppendHeader content disposition attachment filename FileName Response ContentType MimeTyp
  • 将下拉列表与字典绑定

    我将字典绑定到下拉列表 举例来说 我的字典中有以下项目 Test1 123 Test2 321 我希望下拉文本采用以下格式 Test1 Count 123 Test2 Count 321 我沿着以下路径走 但没有运气 MyDropDown
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • ASP.NET @Register 与 @Reference

    我正在我的 ASPX 页面上引用用户控件 我想知道这两个页面指令之间有什么区别 参考 http msdn microsoft com en us library w70c655a aspx 登记 http msdn microsoft co
  • Asp.Net Identity - 不区分大小写的电子邮件和用户名

    有没有办法让 Asp Net Identity 的电子邮件地址和用户名不区分大小写 目前 如果我调用 FindByEmailAsync email 只有在电子邮件地址完全按照键入的方式存储时 区分大小写 它才会起作用 您可以更改用户的注册方
  • 打印带有图像的 html(每个图像在单独的页面上)

    我有一个带有图像的 HTML img img img img 打印时 我希望每个图像都位于单独的页面上 根据打印尺寸 现在我把图像从中间切掉了 有什么办法可以解决吗 您可以尝试以下方法 p p
  • ASP.NET HTTP 请求是否会转换为 1 个线程?

    可以安全地假设当用户通过 HTTP 请求 aspx 页面时 ASP NET 至少为其创建 1 个线程吗 如果是这样 持续多久 如果 1000 人向同一个 aspx 页面发出 HTTP 请求 是否会涉及一些线程回收 因此不会产生不同的 100
  • ASP.Net 5 RC2 配置节绑定

    我刚刚将示例应用程序从 RC1 升级到 RC2 但我找不到如何将 appSettings json 文件的特定部分绑定到我自己的 POCO 样本位于https github com aspnet live asp net blob rc2
  • 我可以在没有 http 处理程序的情况下隐藏 ASP.NET 页面上的图像路径吗?

    我的网站结构中的目录下有许多静态图像 并且我不关心图像的热链接或复制保护 由于多种原因 我需要做的不是在网站上显示图像路径 或显示假路径 有什么方法可以在不求助于 http 处理程序或辅助 asp net 页面的情况下执行此操作吗 你可以使
  • ASP.NET Core:会话 ID 始终变化

    今天启动了一个全新的 ASP NET Core 网站 按照说明添加会话 我们在索引页上打印出会话 ID 它始终是唯一的 我认为这可能是 cookie 合规性 所以我在 Chrome 的高级设置和调试器中删除了所有 cookie 但横幅不会再
  • 使用 Razor View Engine 将内容从部分视图 ASP.NET MVC 3 注入特定部分

    我在我的中定义了此部分 Layout cshtml RenderSection Scripts false 我可以轻松地从视图中使用它 section Scripts Stuff comes here 我正在努力解决的是如何从部分视图中注入
  • 如何调用 window.alert("message");来自 C#?

    根据某些条件 我有自己的异常 并且希望在控制进入此 catch 块时发出警报 catch ApplicationException ex want to call window alert function here 你是说消息框吗 Mes
  • CSS 样式在部分回发时停止工作

    在 ASP net C 应用程序中 我有一个带有自定义 css 的复选框 CSS 文件是 复选框

随机推荐

  • 购买“iPhone”的买家退货空空如也

    tables create table product product id int product name varchar 50 unit price int insert into product values 1 S8 1000 2
  • 在 SQL Server 2008 中调试长动态 sql

    我有一些动态 sql 语句在某些条件下会崩溃 所以我正在尝试调试它 它的构建方式如下 declare sql varchar 4000 select sql
  • PHP中有这个函数吗?

    我发现自己需要这个函数 并且想知道它是否已经存在于 PHP 中 Truncates str and returns it with ending on the end if str is longer than limit characte
  • UILabel swift 中多行字符串的边界矩形

    我已经尝试了几个小时来找到boundingRect我有 UILabel 中的字符串 但似乎没有任何效果 据我了解 boundingRect返回标签中实际文本的大小 而不是标签的大小或类似的内容 这是真的 对吧 我有一个UILabel cal
  • 为什么 gulp.src 不喜欢传递一组完整的文件路径?

    我试图向 gulp src 传递一个我希望它处理的文件数组 这就是现在的数组 bower components jquery jquery js bower components superscrollorama js greensock
  • 使用 css3 的 SVG 阴影

    是否可以使用 css3 为 svg 元素设置阴影 例如 box shadow 5px 5px 5px 888 webkit box shadow 5px 5px 5px 888 我看到一些关于使用滤镜效果创建阴影的评论 有单独使用css的例
  • 是什么导致 SAML 响应中出现响应者状态

    我在使用我们的平台与客户设置 SAML 集成方面花费了相当多的时间 我们正在使用OneLogin 的 php sdk https github com onelogin php saml我们作为服务提供商 不确定他们使用什么作为身份提供者
  • php $_POST 数组在提交表单时为空

    我构建了一个自定义内容管理系统 CMS 它在我的开发盒 Ubuntu PHP5 MySQL5 上完美运行 我刚刚将其移至客户的生产框中 现在所有表单提交都显示为空的 POST 数组 我发现了一个技巧来验证数据是否确实正在传递file get
  • 我如何更好地理解 php 中 symfony2 的服务层

    我正在学习使用 symfony2 但我很难学习什么是服务层以及它可以在哪里使用 我怎样才能更好地理解symfony2中的服务层 我会尽力解释服务 但是 Symfony2docs http symfony com doc current bo
  • 如何在谷歌地图中添加多个标记

    我需要在谷歌地图中添加多个标记 通过使用谷歌地图库添加谷歌地图 我还在这张地图中添加了一个标记 对于单个标记代码 控制器 data tunnels this gt functional gt getTunnelData config cen
  • 最终用户实用程序/应用程序是否应该在 crates.io 上注册?

    是否可以在以下网站上注册普遍有用的 实用程序 应用程序 crates io http crates io The FAQ http doc crates io faq html没有解决这个问题 并且通过浏览 有最终用户应用程序的示例 主要是
  • 如何使用动态 IP 地址将自己从 Google Analytics 中过滤掉?

    如果您从动态 IP 地址访问该网站 有人知道如何设置 Google Analytics 来过滤掉自己吗 我不想将自己纳入家庭使用的统计数据中 因为我通过 Verizon FiOS 拥有动态 IP 地址 谷歌目前有一个浏览器插件 可以阻止您的
  • 在java中调用main内部的main方法

    我们可以在main中调用main方法吗 public static void main String args main a b c 尝试谷歌 找不到链接 抱歉 如果问题很琐碎 您可以但使用正确的格式 main new String a b
  • 重构我的 C# 代码 - Switch 语句

    我目前正在使用以下代码 基本上 此方法为每个任务分配正确的布尔标志 TRUE FALSE 随着需要添加的任务越来越多 我可以看到 switch 语句必须增长才能满足每个任务 必须有一种更简单的方法 来保持方法较小 代码 忘记命名约定 已更改
  • 什么是ReservedCodeCacheSize 和InitialCodeCacheSize?

    有人可以解释一下 JVM 选项吗ReservedCodeCacheSize and InitialCodeCacheSize是 具体来说我什么时候 为什么要改变它 我如何确定合适的尺寸 这就是文档所说的 XX ReservedCodeCac
  • 为什么Java NIO专门引入Buffer类而不是使用数组?

    有人问我一个问题 为什么字节数组不够用 NIO专门引入了一个类Buffer 这个问题的好答案是什么 它只是一种简化读 写操作的包装类吗 如果可能的话 请给我们举个例子来说明我们如何从中受益Buffer不能 很难用数组完成的类 None
  • Facebook API 实时好友在线状态更新

    我目前正在 Facebook 上开发一个应用程序 其中包含我的朋友列表并显示他们的在线状态 为了得到这个 我使用了 fql SELECT uid name online presence status FROM user WHERE uid
  • 如何知道列表中元素的个数是偶数还是奇数

    如何确定任意列表中的元素数量是偶数还是奇数 I tried list index 获得所有索引 但我仍然不知道如何告诉程序什么是偶数 什么是奇数 您可以使用内置函数len 为了这 Python 文档 len http docs python
  • WPF 从 DataTrigger 设置 Image.Source

    我正在尝试定义一个DataTrigger for an Image元素 以便显示连接 断开连接的图像 我不断收到Invalid PropertyDescriptor信息 有任何想法吗
  • 根据方法名称过滤 log4net - 不太明白

    我使用 log4net 来记录我的 Web 应用程序的进度 使用 Log4PostSharp 来 AOP 注入所有方法 这达到了记录 几乎 所有内容的预期效果 并且很好 我现在需要将 Page Load 方法记录到文件 控制台 显然 我可以