log4net.Layout.XmlLayoutSchemaLog4j 中文字符问题

    由于工作需要,需要将服务端的错误日志实时发送给客户端,以便及时处理问题。google一下,在CodePlex找到一个开源项目:http://log2console.codeplex.com/ ,支持Udp 的接收方式,于时在服务端修改了log4net的配置文件:

 

<appender name="udpAppender" type="log4net.Appender.UdpAppender">

    <param name="RemoteAddress" value="192.168.2.255" />

    <param name="RemotePort" value="7071" />

    <param name="Threshold" value="WARN" />

    <layout type="log4net.Layout.XmlLayoutSchemaLog4j">

    </layout>

  </appender>

 

  <root>

    <level value="INFO" />

    <appender-ref ref="RollingFileAppender" />

    <appender-ref ref="ColoredConsoleAppender" />

    <appender-ref ref="udpAppender" />

  </root>

 

log2console能够接收到消息,但是中文字符都变成了“?”,找了半天原因,发现问题出现在log4net项目log4net.Util.Transform类,该类里面定义一个正则表达式:

private static Regex INVALIDCHARS=new Regex(@"[^/x09/x0A/x0D/x20-/xFF/u00FF-/u07FF/uE000-/uFFFD]",RegexOptions.Compiled); 

把所有的中文字符都给过滤了,修改为:

private static Regex INVALIDCHARS = new Regex(@"[^/x09/x0A/x0D/x20-/xFF/u00FF-/uFFFD]", RegexOptions.Compiled);

重新编译log4net,问题解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值