Posted on 14-12-2011
Filed Under (技术) by waterlin

最近在 Linux 下使用 log4cxx 库,使用的 log4cxx 版本为 0.10.0,结果无法显示中文日志信息。

这可怎么办呢?我不可能把中文日志全部一行一行替换为英文的,这可是一个非常傻B的举动。

经过研究,终于知道需要经过如下步骤才能让 log4cxx 在 Linux 下正常显示中文日志:

  1. 你可以先 locale 检查一下 Linux 终端环境是不是 zh_CN ;

    $ locale
    
  2. 如果你的是 en_US 之类的编码,则需要把 locale 设置为简体中文:
    $ export LC_ALL="zh_CN.UTF-8"
    

    如果你的系统提示说没有安装本字符集,则需要用命令进行安装:

    $ sudo apt-get install language-pack-zh-hans
    
  3. 在程序里设置应用程序的 locale 和终端一样:
    LoggerPtr logger;
    log4cxx::PropertyConfigurator::configure("./log4cxx.properties");
    logger= Logger::getLogger("test") ;
    logger->info(("Start logging"));
    setlocale(LC_ALL, "zh_CN.UTF-8");   
    

    关键是最后这一句 setlocale,要设置得和终端一样,都是 zh_CN.UTF-8。

这样,你的程序就可以用 log4cxx0.10.0 输出中文日志信息了。

© 2011, 浏忙大爆炸. All rights reserved.
除非注明,浏忙大爆炸文章均为原创,转载请以链接形式标明本文地址。

Comments

[…] 虽然你的程序可能依赖大量的跨平台库,这些库号称是跨平台的,但是很有可能在不同的平台的表现,会有所不同。例如,log4cxx 在 Linux 和 Windows 下就会有字符集设置的差别。 […]


[…] Under (技术) by waterlin 最近在写 Linux 程序的时候,碰到这样的问题:Log4Cxx 0.10.0 在 Linux 下退出程序时导致程序中断,即提示出现 segmentation fault […]


Post a Comment
Name:
Email:
Website:
Comments: