The version of Apache log4j used by SoundHelix.
Clone
HTTPS:
git clone https://vervis.peers.community/repos/aEp6o
SSH:
git clone USERNAME@vervis.peers.community:aEp6o
Branches
Tags
- 1.3alpha-7
- CHAINSAW_2_SANDBOX_MERGE
- CORE_VERSION
- LEVEL_REPLACES_PRIORITY
- PREALPHA_1_3_AS_OF_2004_05_12
- PRE_CHAINSAW_MODEL_CONVERSION
- PRE_UGLI_MOVE
- TAG_CHAINSAW2_MOVE
- log4j-1.2.17
- log4j-1.2.17-rc1
- v1.3alpha8
- v1.3alpha8-temp
- v1_2_1
- v1_2_10-recalled
- v1_2_11
- v1_2_11_rc1
- v1_2_11rc3
- v1_2_12
- v1_2_12_rc1
- v1_2_12_rc2
- v1_2_12_rc3
- v1_2_12_rc4
- v1_2_12_rc5
- v1_2_12_rc6
- v1_2_13
- v1_2_13_rc1
- v1_2_13_rc2
- v1_2_13_site_update
- v1_2_14
- v1_2_14_maven
- v1_2_14_rc1
- v1_2_14_site_update
- v1_2_15
- v1_2_15_rc1
- v1_2_15_rc2
- v1_2_15_rc3
- v1_2_15_rc4
- v1_2_15_rc5
- v1_2_15_rc6
- v1_2_16
- v1_2_16_rc1
- v1_2_16_rc2
- v1_2_17
- v1_2_17-rc1
- v1_2_17_rc1
- v1_2_17_rc2
- v1_2_17_rc3
- v1_2_2
- v1_2_3
- v1_2_4
- v1_2_6
- v1_2_7
- v1_2_9
- v1_2_alpha0
- v1_2_alpha7
- v1_2beta1
- v1_2final
- v1_3alpha_1
- v1_3alpha_6
- v_1_0
- v_1_0_1
- v_1_0_4
- v_1_1
- v_1_1_1
- v_1_1_2
- v_1_1_3
- v_1_1_b1
- v_1_1b2
- v_1_1b3
- v_1_1b5
- v_1_1b6
- v_1_1b7
- v_1_2beta3
HTMLLayoutTest.java
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.log4j.spi.LoggingEvent;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.Reader;
import java.io.StringReader;
import java.util.Hashtable;
/**
* Test for HTMLLayout.
*
* @author Curt Arnold
*/
public class HTMLLayoutTest extends LayoutTest {
/**
* Construct new instance of XMLLayoutTest.
*
* @param testName test name.
*/
public HTMLLayoutTest(final String testName) {
super(testName, "text/html", false, null, null);
}
/**
* @{inheritDoc}
*/
protected Layout createLayout() {
return new HTMLLayout();
}
/**
* Parses the string as the body of an XML document and returns the document element.
* @param source source string.
* @return document element.
* @throws Exception if parser can not be constructed or source is not a valid XML document.
*/
private Document parse(final String source) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false);
factory.setCoalescing(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Reader reader = new StringReader(source);
return builder.parse(new InputSource(reader));
}
/**
* Tests formatted results.
* @throws Exception if unable to create parser or output is not valid XML.
*/
public void testFormat() throws Exception {
Logger logger = Logger.getLogger("org.apache.log4j.xml.HTMLLayoutTest");
NDC.push("NDC goes here");
LoggingEvent event =
new LoggingEvent(
"org.apache.log4j.Logger", logger, Level.INFO, "Hello, World", null);
HTMLLayout layout = (HTMLLayout) createLayout();
layout.setLocationInfo(true);
String result = layout.format(event);
NDC.pop();
String src =
"<!DOCTYPE body [ <!ENTITY nbsp ' '>]><body>" + result + "</body>";
parse(src);
}
/**
* Tests getHeader.
*/
public void testGetHeader() {
assertEquals("<!DOCTYPE", createLayout().getHeader().substring(0, 9));
}
/**
* Tests getHeader with locationInfo = true.
*/
public void testGetHeaderWithLocation() {
HTMLLayout layout = (HTMLLayout) createLayout();
layout.setLocationInfo(true);
assertEquals("<!DOCTYPE", layout.getHeader().substring(0, 9));
}
/**
* Tests getFooter.
*/
public void testGetFooter() {
assertEquals("</table>", createLayout().getFooter().substring(0, 8));
}
/**
* Tests getLocationInfo and setLocationInfo.
*/
public void testGetSetLocationInfo() {
HTMLLayout layout = new HTMLLayout();
assertEquals(false, layout.getLocationInfo());
layout.setLocationInfo(true);
assertEquals(true, layout.getLocationInfo());
layout.setLocationInfo(false);
assertEquals(false, layout.getLocationInfo());
}
/**
* Tests activateOptions().
*/
public void testActivateOptions() {
HTMLLayout layout = new HTMLLayout();
layout.activateOptions();
}
/**
* Tests getTitle and setTitle.
*/
public void testGetSetTitle() {
HTMLLayout layout = new HTMLLayout();
assertEquals("Log4J Log Messages", layout.getTitle());
layout.setTitle(null);
assertNull(layout.getTitle());
String newTitle = "A treatise on messages of log persuasion";
layout.setTitle(newTitle);
assertEquals(newTitle, layout.getTitle());
}
/**
* Tests buffer downsizing and DEBUG and WARN colorization code paths.
*/
public void testFormatResize() {
Logger logger = Logger.getLogger("org.apache.log4j.xml.HTMLLayoutTest");
NDC.clear();
char[] msg = new char[2000];
for (int i = 0; i < msg.length; i++) {
msg[i] = 'A';
}
LoggingEvent event1 =
new LoggingEvent(
"org.apache.log4j.Logger", logger, Level.DEBUG, new String(msg), null);
HTMLLayout layout = (HTMLLayout) createLayout();
layout.setLocationInfo(true);
String result = layout.format(event1);
Exception ex = new IllegalArgumentException("'foo' is not a valid value.");
LoggingEvent event2 =
new LoggingEvent(
"org.apache.log4j.Logger", logger, Level.WARN, "Hello, World", ex);
result = layout.format(event2);
assertEquals(
Layout.LINE_SEP + "<tr>",
result.substring(0, Layout.LINE_SEP.length() + 4));
}
/**
* Level with arbitrary toString value.
*/
private static final class ProblemLevel extends Level {
private static final long serialVersionUID = 1L;
/**
* Construct new instance.
* @param levelName level name, may not be null.
*/
public ProblemLevel(final String levelName) {
super(6000, levelName, 6);
}
}
/**
* Tests problematic characters in multiple fields.
* @throws Exception if parser can not be constructed
* or source is not a valid XML document.
*/
public void testProblemCharacters() throws Exception {
String problemName = "com.example.bar<>&\"'";
Logger logger = Logger.getLogger(problemName);
Level level = new ProblemLevel(problemName);
Exception ex = new IllegalArgumentException(problemName);
String threadName = Thread.currentThread().getName();
Thread.currentThread().setName(problemName);
NDC.push(problemName);
Hashtable mdcMap = MDC.getContext();
if (mdcMap != null) {
mdcMap.clear();
}
MDC.put(problemName, problemName);
LoggingEvent event =
new LoggingEvent(
problemName, logger, level, problemName, ex);
HTMLLayout layout = (HTMLLayout) createLayout();
String result = layout.format(event);
mdcMap = MDC.getContext();
if (mdcMap != null) {
mdcMap.clear();
}
Thread.currentThread().setName(threadName);
//
// do a little fixup to make output XHTML
//
StringBuffer buf = new StringBuffer(
"<!DOCTYPE table [<!ENTITY nbsp ' '>]><table>");
buf.append(result);
buf.append("</table>");
String doc = buf.toString();
for(int i = doc.lastIndexOf("<br>");
i != -1;
i = doc.lastIndexOf("<br>", i - 1)) {
buf.replace(i, i + 4, "<br/>");
}
parse(buf.toString());
}
}