27 log4j2发送Syslog日志出现乱码错误
乱码是个啥
我们说的乱码,大部分其实都是中文乱码。
例如这次我遇到的,“北京” 两个汉字变成了 “鍖椾含”
出现乱码的原因
我们知道,电脑屏幕显示的汉字其实是由一个个像素点构成的。
而一个汉字其实对应一个字符码。
推导一下,每一个字符码对应一种像素点的组合方式。
如下图:
解码与编码
我们可以这样理解,把字符码变成像素点的过程就叫做"解码"
那么反之,像素点变成字符码的过程叫做"编码"
字符集
那么,咱们解码和编码不能瞎搞吧,0x666我解码成"好",过几天我又解码成"你",这样肯定是不行的。
我们需要一个统一的规则,这个规则就是"字符集"
逆向工程
简单思考一下
说了这么多,怎么处理 “北京” -->“鍖椾含” 这种乱码呢?
我们知道,"鍖椾含"肯定是由字符码 解码过来的。
那么我们就来看看究竟是啥样的字符码会被解码成这玩意。
编码
由像素点–>字符码的过程是编码,那我们就来进行编码。
额,问题来了。我们不知道这个字符集,也就是解码编码的规则。
系统字符集
其实,只要查看系统的字符集就可以了。
echo $LANG
我这里系统的字符集是gb2312。
我们开始进行编码,这里我们可以简单使用一下python。
不要害怕,非常简单的一个命令:
print("鍖椾含".encode("gbk"))
哎,有人说,你这里怎么用了gbk,不是gb2312吗?
gbk对gb2312是一种补充。尤其是对生僻字的补充。
这里三个字肯定是生僻字。。
编码出来的结果:
b'\xe5\x8c\x97\xe4\xba\xac'
大胆猜测,大胆试验
b'\xe5\x8c\x97\xe4\xba\xac'
这个究竟是啥?
这个怎么和北京两个字扯上关系?
我们先考虑,字符码是怎么来的?
回到上面,字符码是 像素点编码得到的。
好,那我们开始对"北京" 进行编码。
print("北京".encode("gbk"))
b'\xb1\xb1\xbe\xa9'
两种编码不一致,看来不是gb2312这种规则。
print("北京".encode("utf8"))
b'\xe5\x8c\x97\xe4\xba\xac'
哦,看来问题已经明了了
复盘乱码的原因
北京 ----编码(utf8) ----解码(gbk) ----鍖椾含
解决方法
只要我们编码的时候,按照gbk的方式进行编码,那么再解码肯定就是对的了。
看看官网
我们去log4j2官网看看,我们使用的Appender是Syslog
链接: SyslogAppender.
我们看到,其中有个charset,我们把charset设置成gb2312。
不就可以把“北京”用gb2312方式编码了吗?
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages=""><Appenders><Syslog name="SYSLOG" facility="LOCAL2" host="xxx.xxx.xxx.xxxx" port="xxx" protocol="UDP" charset="gb2312" /><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyyy-MM-dd} [%t] %-5level %logger{36} - %msg%n" /></Console></Appenders><Loggers><Logger name="com.myApp" level="warn"><AppenderRef ref="SYSLOG"/></Logger><root level="error"><appender-ref ref="Console"/></root></Loggers>
</Configuration>
27 log4j2发送Syslog日志出现乱码错误相关推荐
- 演示:配置日志发送到syslog日志服务器
演示目标:配置网络环境中的交换机和路由器将日志发送到syslog日志服务器. 演示环境:如下图10.54所示的演示环境. 演示背景:要求部署网络中的syslog服务器,集中的收集交换机S1和路由器R1 ...
- 升级到log4j2之后在idea控制台输出日志中文乱码的解决方案
log4j升级到log4j2之后在idea编辑器的控制台输出日志中文乱码 问题概述: 项目组最近升级了日志系统,由log4j升级到了log4j2,在调试的过程中发现我用的idea编辑器的控制台输出中文 ...
- ESXi与Linux主机配置syslog日志上传远程服务器
ESXi与Linux主机配置syslog日志上传远程服务器 https://www.conum.cn/cloud/vmware/148.html 前言 最近很多客户遇到等级保护监测,需要搭建日志服务器 ...
- linux syslog日志服务
2019独角兽企业重金招聘Python工程师标准>>> 简介 不同的Linux发行版使用不同syslog程序来记录系统日志. 的Debain 4.0/Ubuntu8.04(桌面版 ...
- syslog日志服务
syslog介绍 syslog是一种标准工业协议, 也可以说它是一款服务,它可以用来记录UNIX主机系统设备的日志信息,也可以检测网络设备,如交换机,路由器等.syslog协议也可以实现机器间通信,继 ...
- springboot+log4j2+阿里云日志
1. springboot配置文件 log4j2可以有多个配置文件根据环境的不同(本地环境.测试环境.线上环境)可以选择不同的配置,在application中可以使用以下属性进行配置: logging ...
- 从libc-2.27.so[7fd68b298000+1e7000]崩溃回溯程序段错误segfault
近期在外场试验过程中出现了一次进程退出的问题(在西安地面测试中也出现过一次),但是因为该问题不复现,后面就一直记着但没有进行闭环,也不清楚是异常退出还是因为资源消耗问题被系统杀死.这次回来之后有必要进 ...
- 同步syslog日志到服务端
目录结构 前言 Windows下安装syslog服务端(Syslog Watcher Manager) java同步日志代码块 日志同步测试 前言 系统同步日志到syslog服务器,此文章记录以下内容 ...
- Linux syslog日志系统详解
一. syslog简介 syslog是一种工业标准的协议,可用来记录设备的日志.在UNIX系统,路由器.交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件.管理者可以 ...
- 建立Windows下面的syslog日志服务器
我们需要测试一种集中日志系统,要在Windows上建立一个类Linux下的集中日志系统. 经过比较Winsyslog和Kiwisyslog等工具,最终选定Kiwisyslog(http://www.k ...
最新文章
- PHP中的替代语法(冒号、endif、endwhile、endfor)
- 开源一个友盟 for android 操作的封装包
- Android 面试 - 有关Service的面试题
- 设计模式理解:模板方法
- kafka报错打开文件数过多导致kafka关闭
- my Lead add Lead test
- 路飞学院python官网-路飞学院-Python爬虫实战密训班-第1章
- I/O复用之 epoll
- 病毒c语言代码大全,谁有C语言编写的病毒源代码?
- SpringBoot2基础,进阶,数据库,中间件等系列文章目录分类
- Callback Functions Tutorial
- 面试题29. 顺时针打印矩阵/54. 螺旋矩阵
- VB中输入函数InputBox的用法
- 2021-09-02AUC
- 《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Linux版 - 1]
- Mac谷歌浏览器chromedriver驱动安装教程,实现浏览器自动化
- Nginx+Tomcat实现负载均衡、动静分离集群部署
- 修改Thinkphp-cmf上传视频大小限制
- python内置库求复数的辐角_皮肤与美容—医学专家如是说_中国大学MOOC(慕课)_章节测验答案...
- Windows7 键盘快捷
热门文章
- android swf 文件播放器,swf播放器怎么用?swf播放器安卓版使用教程
- 什么是 CNC?什么是电脑锣?学 CNC主要学什么?
- nero burning rom 2021绿色版安装及使用教程
- 神经网络的发展与应用
- 智能机械按摩椅的改进设计
- Java 网络编程之Socket详解
- cs6导入库闪退 flash_flash cs6源文件怎么修复,导入老跳出意外格式,我是用flash cs6做的。我还有一半没有导出 swf 呢?...
- 解码隆基模式:光伏企业的百亿成长之路
- 股票分时数据HTML,股票历史分时数据
- sql查询优化7种方法