有没有办法使用java程序将像白色笑脸这样的unicode字符打印到日志文件中?

时间:2015-09-06 09:44:08

标签: java logging unicode

有没有办法使用Java程序或使用log4J之类的日志框架将白色笑脸等unicode字符打印到日志文件中

2 个答案:

答案 0 :(得分:1)

是的,您可以将 Unicode characters 写入日志文件。

实例化org.apache.log4j.Logger对象,设置适当的参数(参见下面的测试示例),然后

logger.info("☺");

logger.info(String.valueOf(Character.toChars(0x263A)));

在第二种情况下,我们使用的是unicode字符的 unicode code point

实施例

import org.apache.log4j.*;
import org.junit.runner.Description;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;

class ExecutionListener extends RunListener {

    private final Logger logger;

    /**
    * Constructor for class ExecutionListener.
    */
    public ExecutionListener() {
        logger = LogManager.getLogger(GenericTaskInterpreterTests.class);
        FileAppender fileAppender = new FileAppender();
        fileAppender.setName("FileLogger");
        fileAppender.setFile("path/to/log4j-application.log");
        fileAppender.setLayout(new PatternLayout("%d %-5p [%c{1}.%M] %m%n"));
        fileAppender.setThreshold(Level.DEBUG);
        fileAppender.setAppend(true);
        fileAppender.activateOptions();

        LogManager.getRootLogger().addAppender(fileAppender);
    }

    /**
    * Called when all tests have finished
    */
    public void testRunFinished(Result result) throws Exception {
        logger.info("Number of testcases executed : " + result.getRunCount());
        logger.info("Number of testcases failed : " + result.getFailureCount());
        logger.info("☺"); // This gets written to the log file
        logger.info(String.valueOf(Character.toChars(0x263A))); // Same thing as above, smiley face gets written to log file.
    }
}

enter image description here enter image description here

答案 1 :(得分:0)

是的,您只需要确保文件是以可以表示这些字符的Unicode编码编写的。那将是UTF-8或UTF-16。

查看日志文件时,您需要一个能够读取UTF-8 / UTF-16的编辑器,并且该编辑器具有显示这些字符的相应字体。