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