You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by Kamal Ahmed <KA...@webMethods.com> on 2006/08/21 23:00:24 UTC
Testing log4j with UTF-16
Hi,
In the test EncodingTest.java, how is the UTF-16 handled, since UTF-16
appends Byte Order Mark, as below
fe ff
UTF-16 for 16-bit internal UCS-2, big endian, Java network order
ff fe
UTF-16 for 16-bit internal UCS-2, little endian, Intel/Microsoft order
00 00 fe ff
UTF-32 for 32-bit internal UCS-4, big-endian, Java network order
Here is the source file:
/*
* Copyright 1999,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.log4j;
import junit.framework.TestCase;
import org.apache.log4j.util.BinaryCompare;
/**
* Tests support for encoding specification.
* @author Curt Arnold
* @since 1.3
*/
public class EncodingTest extends TestCase {
/**
* Construct an instance of EncodingTest.
* @param name test name
*/
public EncodingTest(final String name) {
super(name);
}
/**
* Resets configuration after each test.
*/
public void tearDown() {
Logger.getRootLogger().getLoggerRepository().resetConfiguration();
}
/**
* Test us-ascii encoding.
* @throws Exception if test failure
*/
public void testASCII() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/ascii.log", "US-ASCII");
common(root);
assertTrue(BinaryCompare.compare("output/ascii.log",
"witness/encoding/ascii.log"));
}
/**
* Test iso-8859-1 encoding.
* @throws Exception if test failure
*/
public void testLatin1() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/latin1.log", "iso-8859-1");
common(root);
assertTrue(BinaryCompare.compare("output/latin1.log",
"witness/encoding/latin1.log"));
}
/**
* Test utf-8 encoding.
* @throws Exception if test failure.
*/
public void testUtf8() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/UTF-8.log", "UTF-8");
common(root);
assertTrue(BinaryCompare.compare("output/UTF-8.log",
"witness/encoding/UTF-8.log"));
}
/**
* Test utf-16 encoding.
* @throws Exception if test failure.
*/
public void testUtf16() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/UTF-16.log", "UTF-16");
common(root);
assertTrue(BinaryCompare.compare("output/UTF-16.log",
"witness/encoding/UTF-16.log"));
}
/**
* Test utf-16be encoding.
* @throws Exception if test failure.
*/
public void testUtf16BE() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/UTF-16BE.log", "UTF-16BE");
common(root);
assertTrue(BinaryCompare.compare("output/UTF-16BE.log",
"witness/encoding/UTF-16BE.log"));
}
/**
* Test utf16-le encoding.
* @throws Exception if test failure.
*/
public void testUtf16LE() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/UTF-16LE.log", "UTF-16LE");
common(root);
assertTrue(BinaryCompare.compare("output/UTF-16LE.log",
"witness/encoding/UTF-16LE.log"));
}
/**
* Configure logging.
* @param logger logger
* @param filename logging file name
* @param encoding encoding
*/
private void configure(final Logger logger, final String filename,
final String encoding) {
PatternLayout layout = new PatternLayout();
layout.setConversionPattern("%p - %m\\n");
layout.activateOptions();
FileAppender appender = new FileAppender();
appender.setFile(filename);
appender.setEncoding(encoding);
appender.setAppend(false);
appender.setLayout(layout);
appender.activateOptions();
logger.addAppender(appender);
logger.setLevel(Level.INFO);
}
/**
* Common logging requests.
* @param logger logger
*/
private void common(final Logger logger) {
logger.info("Hello, World");
// pi can be encoded in iso-8859-1
logger.info("\u00b9");
// one each from Latin, Arabic, Armenian, Bengali, CJK and
Cyrillic
logger.info("A\u0605\u0530\u0986\u4E03\u0400");
}
}