Log4net 乱码问题解决
在将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);
}
}
}
Log4net 乱码问题解决的更多相关文章
- WingIDE中文乱码问题解决方法
WingIDE中文乱码问题解决方法 安装完WingIDE后,首次运行python脚本时,若脚本中含有UTF-8中文,在Debug I/O输出框中,全部变成了乱码. 这时其实我们设置下WingIDE的编 ...
- ASP 编码转换(乱码问题解决)
ASP 编码转换(乱码问题解决) 输出前先调用Conversion函数进行编码转换,可以解决乱码问题. 注,“&参数&”为ASP的连接符,这里面很多是直接调用的数据库表字段,实际使用请 ...
- window.location.href url含中文服务器收到乱码问题解决
中文乱码问题 window.location.href url含中文服务器收到乱码问题解决 (1).页面中先对中文进行编码. 如:window.location.href = url+"&a ...
- ubuntu mysql emma中文乱码问题解决
ubuntu mysql emma中文乱码问题解决 emma默认用apt-get 安装的话,emma是不支持中文的,配置文件或直接修改emma程序源文件(python). apt-get安装emma ...
- paip.java swt 乱码问题解决
paip.java swt 乱码问题解决 看累挂,Dfile.encoding是gbk的.. 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专 ...
- Spring MVC3返回JSON数据中文乱码问题解决(转)
Spring MVC3返回JSON数据中文乱码问题解决 查了下网上的一些资料,感觉比较复杂,这里,我这几使用两种很简单的办法解决了中文乱码问题. Spring版本:3.2.2.RELEASE Jack ...
- ASP+Access UTF-8 网页乱码问题解决办法
用ACCESS数据库和ASP做网站时用UTF-8编码有时会出现乱码,再者网页出错或者刷新页面后就是乱码,如果数据库取值乱码在开头加上<%@LANGUAGE="VBSCRIPT" ...
- Ubuntu下Eclipse中文乱码问题解决(转)
Ubuntu下Eclipse中文乱码问题解决 把Windows下的工程导入到了Linux下Eclipse中,由于以前的工程代码,都是GBK编码的(Windows下的Eclipse 默认会去读取系统的编 ...
- 【转】asp.net Cookie值中文乱码问题解决方法
来源:脚本之家.百度空间.网易博客 http://www.jb51.net/article/34055.htm http://hi.baidu.com/honfei http://tianminqia ...
随机推荐
- LeetCode 28 Implement strStr() (实现找子串函数)
题目链接: https://leetcode.com/problems/implement-strstr/?tab=Description Problem : 实现找子串的操作:如果没有找到则返回 ...
- 【咸鱼教程】Egret中可长按复制的文本(例如复制优惠码)
一 实际效果二 实现原理三 源码下载 在egret中实现长按复制文本效果,一般用于复制优惠码什么的. 一 实际效果 二 实现原理 在egret的游戏元素都是绘制在canvas上的,我们 ...
- 添加Net4CollectionTypeFactory的原因
.NET4.0已经实现了该功能 http://jahav.com/blog/nhibernate-using-net-4-iset/ NHibernate using .NET 4 ISet 0 Co ...
- iOS开发过程中使用Core Data应避免的十个错误
原文出处: informit 译文出处:cocoachina Core Data是苹果针对Mac和iOS平台开发的一个框架,主要用来储存数据.对很多开发者来说,Core Data比较容易入手,但很 ...
- thinkphp---部署在IIS8.0服务器上
最近做了一个项目,使用的是我自己基于thinkphp开发的一套CMS,由于我本地使用的都是apche的环境,即使是线上环境用的也是宝塔面板,但是现在要将thinkphp的系统部署在IIS8.0的环境下 ...
- HDU 6441 - Find Integer - [费马大定理][2018CCPC网络选拔赛第4题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6441 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- easyui-datagrid个人实例
这个实例数据表格的功能,可以实现分页,增删改查功能 1.user.jsp <%@ page language="java" contentType="text/ht ...
- Oracle安装部署之一键安装oracle数据库及其脚本
准备工作:通过ftp工具上传oracle安装软件到linux系统/mnt目录下,并通过unzip命令解压软件.--------------------------------------------- ...
- iOS多线程编程之线程的状态(转载)
一.简单介绍 线程的创建: self.thread=[[NSThread alloc]initWithTarget:self selector:@selector(test) object:nil]; ...
- 《MYSQL必知必会》
1. 同一个数据库中不允许出现同名表:不同的数据库中可以出现同名表2. 每一行记录都用有一个key(一列或一组列作为key)3. 作为key的列不允许值为空(NULL)4. 多个列作为key时,多个列 ...