在将log4net输出到UdpAppender会出现乱码问题,当然,丢到第三方日志分析工具glaylog下,也出现中文乱码。

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="UdpAppender" type="log4net.Appender.UdpAppender">
<param name="Encoding" value="utf-8" />
<remoteAddress value="192.168.1.43" />
<remotePort value="" />
<layout type="log4net.Layout.PatternLayout" value="%-5level %logger %message %username %date{yyyyMMdd HH:mm:ss fff} "/>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="ColoredConsoleAppender" />
<appender-ref ref="UdpAppender" />
</root> <logger name="*">
<level value="ALL" />
<appender-ref ref="UdpAppender" />
</logger>
</log4net>
</configuration>

上面的配置中,加上了<param name="Encoding" value="utf-8" />  问题解决!

LogHelper 公共类

 using log4net;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Web; namespace Log4netDemo
{
public class LogHelper
{
//private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); /// <summary>
/// 每个函数都拥有自己的栈空间,为什么是3?
/// trace.GetFrame(0).GetMethod().Name = GetCurrentMethodFullName() 方法本身
/// trace.GetFrame(1).GetMethod().Name = log(),即调用GetCurrentMethodFullName()上一级
/// trace.GetFrame(2).GetMethod().Name = Info(),即 public static void Info(object message) ,log()的上一级
/// 所以,写死是3,3就是控制器了。
/// </summary>
/// <returns></returns>
private static string GetCurrentMethodFullName()
{
try
{
StackTrace trace = new StackTrace();
return trace.GetFrame().GetMethod().DeclaringType.ToString();
}
catch
{
return System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.ToString();
}
} private static ILog log(string moduleName, string executor)
{
log4net.LogicalThreadContext.Properties["ModuleName"] = string.IsNullOrEmpty(moduleName)? "" : moduleName;
log4net.LogicalThreadContext.Properties["Executor"] = string.IsNullOrEmpty(executor) ? "" : executor;
return log4net.LogManager.GetLogger(GetCurrentMethodFullName());
} public static void Info(object message)
{
ILog nlog = log("", "");
nlog.Info(message);
} public static void Info(object message, string moduleName)
{
ILog nlog = log(moduleName, "");
nlog.Info(message);
} public static void Info(object message, string moduleName, string executor)
{
ILog nlog = log(moduleName, executor);
nlog.Info(message);
} public static void Error(object message)
{
ILog nlog = log("", "");
nlog.Error(message, null);
} public static void Error(Exception exception)
{
ILog nlog = log("", "");
nlog.Error("", exception);
} public static void Error(object message, string moduleName)
{
ILog nlog = log(moduleName, "");
nlog.Error(message, null);
} public static void Error(object message, string moduleName, string executor)
{
ILog nlog = log(moduleName, executor);
nlog.Error(message, null);
} public static void Error(object message, string moduleName, string executor, Exception exception)
{
ILog nlog = log(moduleName, executor);
nlog.Error(message, exception);
}
}
}

最新文章

  1. AngularJS 参考手册
  2. ajax之 get post请求
  3. 此操作失败的原因是对 IID 为“{000208DA-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface
  4. Eclipse中10个最有用的快捷键组合
  5. js弹出公告
  6. .Net自帶Ajax和GridView
  7. wikioi 1475 m进制转十进制
  8. git add 命令详解
  9. POJ (线段相交 最短路) The Doors
  10. 大区间素数筛选 POJ2689
  11. Glibc和GCC,ARM-LINUX-GCC的关系
  12. HTML新元素
  13. hdoj 4552 怪盗基德的挑战书【求前缀在字符串中出现的次数之和】
  14. 重载equals方法时要遵守的通用约定--自反性,对称性,传递性,一致性,非空性
  15. idea部署Maven入门(一)——环境变量的配置和下载
  16. cf478d 线性dp好题
  17. 在 NLTK 中使用 Stanford NLP 工具包
  18. linux中为什么cpu使用率会超过100见解
  19. Android开源库项目集锦
  20. QT 运行崩溃:The inferior stopped because it received a signal from the Operating System

热门文章

  1. Linq 集合处理(Union)
  2. jQuery Sizzle选择器(二)
  3. 题目1448:Legal or Not(有向无环图判断——拓扑排序问题)
  4. LeetCode 28 Implement strStr() (实现找子串函数)
  5. LeetCode 23 Merge k Sorted Lists(合并k个有序链表)
  6. 使用 Gogs 搭建自己的 Git 服务器
  7. sql中的group by 和 having 用法解析
  8. 【咸鱼教程】一个简单的弹出二级菜单UIPopupMenu
  9. Elasticsearch 不同的搜索类型之间的区别
  10. 8.26 js