最近在调试代码,需要自己编写一个进程,把日志写到文件中并统一管理。
因为是机器人工程师,所以采用了和ros一样实现的log4j工具。
但是意外发现,中文无法写入到日志中,显示出来的全是问号。
在网上搜索解决方法,搜到的大部分是这种:
log4j中文日志乱码--输出到文件的日志,中文部分全是问号乱码的处理_请叫我大师兄_的博客-CSDN博客_log日志中文乱码
log4j日志文件乱码问题的解决方法 - 不断努力的青春 - 博客园
可以说基本上是没有屁用。
其实只要在你的日志管理代码中,在调用ROS_INFO或LOG4CXX_INFO等函数之前,引入一个头文件,并且执行一句话即可成功记录中文:
- //引入这个头文件
- #include
- //执行这句话
- std::locale::global(std::locale(""));
其他网上说的什么在配置文件里加入一个:
log4j.appender.A1.Encoding=UTF-8
之类的完全没有用,就不要尝试了。