logback-dev
Threads by month
- ----- 2025 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
January 2007
- 6 participants
- 258 discussions

08 Jan '07
Author: ceki
Date: Mon Jan 8 23:17:26 2007
New Revision: 1176
Modified:
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ClassicLayout.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LayoutAction.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/BasicLoggerTest.java
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/MessageFormattingTest.java
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/StringListAppender.java
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/BasicJoranTest.java
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppenderTest.java
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppenderTestApp.java
Log:
The Appender and Layout interfaces are now generic. This is a change with wide implications in the code.
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java Mon Jan 8 23:17:26 2007
@@ -12,6 +12,7 @@
import org.slf4j.LoggerFactory;
+import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.ConsoleAppender;
import ch.qos.logback.core.status.InfoStatus;
import ch.qos.logback.core.status.StatusManager;
@@ -28,7 +29,7 @@
if(sm != null) {
sm.add(new InfoStatus("Setting up default configuration.", hiddenSingleton));
}
- ConsoleAppender ca = new ConsoleAppender();
+ ConsoleAppender<LoggingEvent> ca = new ConsoleAppender<LoggingEvent>();
ca.setContext(lc);
ca.setName("console");
PatternLayout pl = new PatternLayout();
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ClassicLayout.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ClassicLayout.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ClassicLayout.java Mon Jan 8 23:17:26 2007
@@ -4,7 +4,7 @@
import ch.qos.logback.core.Layout;
-public interface ClassicLayout extends Layout {
+public interface ClassicLayout extends Layout<LoggingEvent> {
/**
* Transform an event of type {@link LoggingEvent) and return it as a String after
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java Mon Jan 8 23:17:26 2007
@@ -25,7 +25,7 @@
import ch.qos.logback.core.spi.AppenderAttachableImpl;
import ch.qos.logback.core.spi.FilterReply;
-public final class Logger implements org.slf4j.Logger, AppenderAttachable,
+public final class Logger implements org.slf4j.Logger, AppenderAttachable<LoggingEvent>,
Serializable {
/**
@@ -65,7 +65,7 @@
*/
private List<Logger> childrenList;
- private transient AppenderAttachableImpl aai;
+ private transient AppenderAttachableImpl<LoggingEvent> aai;
/**
* Additivity is set to true by default, that is children inherit the
* appenders of their ancestors by default. If this variable is set to
@@ -221,9 +221,9 @@
return aai.detachAppender(name);
}
- public synchronized void addAppender(Appender newAppender) {
+ public synchronized void addAppender(Appender<LoggingEvent> newAppender) {
if (aai == null) {
- aai = new AppenderAttachableImpl();
+ aai = new AppenderAttachableImpl<LoggingEvent>();
}
aai.addAppender(newAppender);
}
@@ -242,9 +242,9 @@
return aai.iteratorForAppenders();
}
- public Appender getAppender(String name) {
+ public Appender<LoggingEvent> getAppender(String name) {
if (aai == null) {
- aai = new AppenderAttachableImpl();
+ return null;
}
return aai.getAppender(name);
}
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java Mon Jan 8 23:17:26 2007
@@ -45,7 +45,7 @@
*
*/
-public class PatternLayout extends PatternLayoutBase implements ClassicLayout {
+public class PatternLayout extends PatternLayoutBase<LoggingEvent> {
// FIXME fix exception handling
@@ -162,8 +162,4 @@
return writeLoopOnConverters(event);
}
- public String doLayout(Object event) {
- return doLayout((LoggingEvent) event);
- }
-
}
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java Mon Jan 8 23:17:26 2007
@@ -33,8 +33,8 @@
* @author Ceki Gülcü
* @author Sébastien Pennec
*/
-public class HTMLLayout extends HTMLLayoutBase implements ClassicLayout {
-
+public class HTMLLayout extends HTMLLayoutBase<LoggingEvent> implements ClassicLayout {
+
/**
* Default pattern string for log output.
*/
@@ -55,10 +55,6 @@
return PatternLayout.defaultConverterMap;
}
- public String doLayout(Object event) {
- return doLayout((LoggingEvent) event);
- }
-
public String doLayout(LoggingEvent event) {
StringBuffer buf = new StringBuffer();
handleTableClosing(buf);
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LayoutAction.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LayoutAction.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LayoutAction.java Mon Jan 8 23:17:26 2007
@@ -1,14 +1,13 @@
package ch.qos.logback.classic.joran.action;
-import ch.qos.logback.classic.ClassicLayout;
-import ch.qos.logback.core.Layout;
+import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.joran.action.AbstractLayoutAction;
-public class LayoutAction extends AbstractLayoutAction {
+public class LayoutAction extends AbstractLayoutAction<LoggingEvent> {
- protected boolean isOfCorrectType(Layout layout) {
- return (layout instanceof ClassicLayout);
- }
+// protected boolean isOfCorrectType(Layout layout) {
+// return (layout instanceof ClassicLayout);
+// }
}
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java Mon Jan 8 23:17:26 2007
@@ -29,13 +29,13 @@
* @author Sébastien Pennec
*
*/
-public class SMTPAppender extends SMTPAppenderBase {
+public class SMTPAppender extends SMTPAppenderBase<LoggingEvent> {
static final String DEFAULT_SUBJECT_PATTERN = "%logger{20} - %m %nopex";
static final String DEFAULT_EVALUATOR_EXPRESSION = "level >= ERROR";
private int bufferSize = 512;
- protected CyclicBuffer cb = new CyclicBuffer(bufferSize);
+ protected CyclicBuffer<LoggingEvent> cb = new CyclicBuffer<LoggingEvent>(bufferSize);
/**
* The default constructor will instantiate the appender with a
@@ -70,9 +70,7 @@
* Perform SMTPAppender specific appending actions, mainly adding the event to
* a cyclic buffer.
*/
- protected void subAppend(Object eventObject) {
- LoggingEvent event = (LoggingEvent) eventObject;
-
+ protected void subAppend(LoggingEvent event) {
event.getThreadName();
cb.add(event);
// addInfo("Added event to the cyclic buffer: " + event.getMessage());
@@ -83,7 +81,7 @@
int len = cb.length();
for (int i = 0; i < len; i++) {
// sbuf.append(MimeUtility.encodeText(layout.format(cb.get())));
- Object event = cb.get();
+ LoggingEvent event = cb.get();
sbuf.append(layout.doLayout(event));
}
}
@@ -108,7 +106,7 @@
}
@Override
- protected Layout makeSubjectLayout(String subjectStr) {
+ protected Layout<LoggingEvent> makeSubjectLayout(String subjectStr) {
if(subjectStr == null) {
subjectStr = DEFAULT_SUBJECT_PATTERN;
}
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java Mon Jan 8 23:17:26 2007
@@ -27,7 +27,7 @@
* @author Sébastien Pennec
*/
-public class SocketAppender extends SocketAppenderBase {
+public class SocketAppender extends SocketAppenderBase<LoggingEvent> {
boolean includeCallerData = false;
@@ -53,7 +53,7 @@
}
@Override
- protected void postProcessEvent(Object event) {
+ protected void postProcessEvent(LoggingEvent event) {
if (includeCallerData) {
((LoggingEvent) event).getCallerData();
}
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java Mon Jan 8 23:17:26 2007
@@ -28,14 +28,14 @@
*
* @author Ceki Gülcü
*/
-public class SyslogAppender extends SyslogAppenderBase {
+public class SyslogAppender extends SyslogAppenderBase<LoggingEvent> {
String prefixPattern;
PatternLayout prefixLayout;
static final public String DEFAULT_SUFFIX_PATTERN = "[%thread] %logger %msg";
- public Layout buildLayout(String facilityStr) {
+ public Layout<LoggingEvent> buildLayout(String facilityStr) {
prefixPattern = "%syslogStart{" + facilityStr + "}%nopex";
prefixLayout = new PatternLayout();
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/BasicLoggerTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/BasicLoggerTest.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/BasicLoggerTest.java Mon Jan 8 23:17:26 2007
@@ -13,6 +13,7 @@
import org.slf4j.LoggerFactory;
+import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.read.ListAppender;
import ch.qos.logback.core.util.StatusPrinter;
@@ -20,7 +21,7 @@
public void testBasic() {
LoggerContext lc = new LoggerContext();
- ListAppender listAppender = new ListAppender();
+ ListAppender<LoggingEvent> listAppender = new ListAppender<LoggingEvent>();
listAppender.start();
Logger root = lc.getLogger(LoggerContext.ROOT_NAME);
root.addAppender(listAppender);
@@ -32,7 +33,7 @@
public void testNoStart() {
LoggerContext lc = new LoggerContext();
- ListAppender listAppender = new ListAppender();
+ ListAppender<LoggingEvent> listAppender = new ListAppender<LoggingEvent>();
// listAppender.start();
listAppender.setContext(lc);
Logger root = lc.getLogger(LoggerContext.ROOT_NAME);
@@ -44,7 +45,7 @@
public void testAdditive() {
LoggerContext lc = new LoggerContext();
- ListAppender listAppender = new ListAppender();
+ ListAppender<LoggingEvent> listAppender = new ListAppender<LoggingEvent>();
listAppender.start();
Logger root = lc.getLogger(LoggerContext.ROOT_NAME);
root.addAppender(listAppender);
@@ -68,7 +69,7 @@
public void testBasicFiltering() throws Exception {
LoggerContext lc = new LoggerContext();
- ListAppender listAppender = new ListAppender();
+ ListAppender<LoggingEvent> listAppender = new ListAppender<LoggingEvent>();
listAppender.start();
Logger root = lc.getLogger(LoggerContext.ROOT_NAME);
root.addAppender(listAppender);
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java Mon Jan 8 23:17:26 2007
@@ -53,7 +53,7 @@
/**
* Array of appenders.
*/
- private ArrayList appenderList;
+ private ArrayList<Appender<LoggingEvent>> appenderList;
/**
* Additivity is set to true by default, that is children inherit the
@@ -155,7 +155,7 @@
if (appenderList != null) {
int len = appenderList.size();
for (int i = 0; i < len; i++) {
- Appender a = (Appender) appenderList.get(i);
+ Appender a = appenderList.get(i);
a.stop();
}
appenderList.clear();
@@ -195,12 +195,12 @@
private int appendLoopOnAppenders(LoggingEvent event) {
int size = 0;
- Appender appender;
+ Appender<LoggingEvent> appender;
if (appenderList != null) {
size = appenderList.size();
for (int i = 0; i < size; i++) {
- appender = (Appender) appenderList.get(i);
+ appender = appenderList.get(i);
appender.doAppend(event);
}
}
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/MessageFormattingTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/MessageFormattingTest.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/MessageFormattingTest.java Mon Jan 8 23:17:26 2007
@@ -1,3 +1,12 @@
+/**
+ * Logback: the generic, reliable, fast and flexible logging framework.
+ *
+ * Copyright (C) 1999-2007, QOS.ch
+ *
+ * This library is free software, you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation.
+ */
package ch.qos.logback.classic;
import junit.framework.TestCase;
@@ -6,57 +15,56 @@
public class MessageFormattingTest extends TestCase {
- LoggerContext lc;
- ListAppender listAppender;
-
- public void setUp() {
- lc = new LoggerContext();
- Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
- listAppender = new ListAppender();
- listAppender.setContext(lc);
- listAppender.start();
- logger.addAppender(listAppender);
- }
-
- public void testFormattingOneArg() {
- Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
- logger.debug("{}", new Integer(12));
- LoggingEvent event = (LoggingEvent)listAppender.list.get(0);
- assertEquals("12", event.getFormattedMessage());
- }
-
- public void testFormattingTwoArg() {
- Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
- logger.debug("{}-{}", new Integer(12), new Integer(13));
- LoggingEvent event = (LoggingEvent)listAppender.list.get(0);
- assertEquals("12-13", event.getFormattedMessage());
- }
-
- public void testNoFormatting() {
- Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
- logger.debug("test", new Integer(12), new Integer(13));
- LoggingEvent event = (LoggingEvent)listAppender.list.get(0);
- assertEquals("test", event.getFormattedMessage());
- }
-
- public void testNoFormatting2() {
- Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
- logger.debug("test");
- LoggingEvent event = (LoggingEvent)listAppender.list.get(0);
- assertEquals("test", event.getFormattedMessage());
- }
-
- public void testMessageConverter() {
- Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
- logger.debug("{}", 12);
- LoggingEvent event = (LoggingEvent)listAppender.list.get(0);
- PatternLayout layout = new PatternLayout();
- layout.setContext(lc);
- layout.setPattern("%m");
- layout.start();
- String formattedMessage = layout.doLayout(event);
- assertEquals("12", formattedMessage);
- }
-
-
+ LoggerContext lc;
+ ListAppender<LoggingEvent> listAppender;
+
+ public void setUp() {
+ lc = new LoggerContext();
+ Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
+ listAppender = new ListAppender<LoggingEvent>();
+ listAppender.setContext(lc);
+ listAppender.start();
+ logger.addAppender(listAppender);
+ }
+
+ public void testFormattingOneArg() {
+ Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
+ logger.debug("{}", new Integer(12));
+ LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+ assertEquals("12", event.getFormattedMessage());
+ }
+
+ public void testFormattingTwoArg() {
+ Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
+ logger.debug("{}-{}", new Integer(12), new Integer(13));
+ LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+ assertEquals("12-13", event.getFormattedMessage());
+ }
+
+ public void testNoFormatting() {
+ Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
+ logger.debug("test", new Integer(12), new Integer(13));
+ LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+ assertEquals("test", event.getFormattedMessage());
+ }
+
+ public void testNoFormatting2() {
+ Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
+ logger.debug("test");
+ LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+ assertEquals("test", event.getFormattedMessage());
+ }
+
+ public void testMessageConverter() {
+ Logger logger = lc.getLogger(LoggerContext.ROOT_NAME);
+ logger.debug("{}", 12);
+ LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
+ PatternLayout layout = new PatternLayout();
+ layout.setContext(lc);
+ layout.setPattern("%m");
+ layout.start();
+ String formattedMessage = layout.doLayout(event);
+ assertEquals("12", formattedMessage);
+ }
+
}
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java Mon Jan 8 23:17:26 2007
@@ -47,7 +47,8 @@
.getName(), logger, Level.INFO, "Some message", ex, null);
}
- public Object getEventObject() {
+ @Override
+ public LoggingEvent getEventObject() {
return makeLoggingEvent(null);
}
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/StringListAppender.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/StringListAppender.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/StringListAppender.java Mon Jan 8 23:17:26 2007
@@ -7,9 +7,9 @@
import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.core.Layout;
-public class StringListAppender extends AppenderBase {
+public class StringListAppender extends AppenderBase<LoggingEvent> {
- Layout layout;
+ Layout<LoggingEvent> layout;
public List<String> strList = new ArrayList<String>();
public void start() {
@@ -26,17 +26,17 @@
}
@Override
- protected void append(Object eventObject) {
+ protected void append(LoggingEvent eventObject) {
LoggingEvent le = (LoggingEvent) eventObject;
String res = layout.doLayout(le);
strList.add(res);
}
- public Layout getLayout() {
+ public Layout<LoggingEvent> getLayout() {
return layout;
}
- public void setLayout(Layout layout) {
+ public void setLayout(Layout<LoggingEvent> layout) {
this.layout = layout;
}
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java Mon Jan 8 23:17:26 2007
@@ -33,7 +33,7 @@
lc = new LoggerContext();
lc.setName("default");
- ListAppender appender = new ListAppender();
+ ListAppender<LoggingEvent> appender = new ListAppender<LoggingEvent>();
appender.setContext(lc);
layout = new HTMLLayout();
layout.setThrowableRenderer(new DefaultThrowableRenderer());
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/BasicJoranTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/BasicJoranTest.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/joran/BasicJoranTest.java Mon Jan 8 23:17:26 2007
@@ -22,6 +22,7 @@
import ch.qos.logback.classic.util.Constants;
import ch.qos.logback.core.joran.spi.JoranException;
import ch.qos.logback.core.read.ListAppender;
+import ch.qos.logback.core.util.StatusPrinter;
public class BasicJoranTest extends TestCase {
@@ -73,6 +74,8 @@
jc.setContext(loggerContext);
jc.doConfigure(Constants.TEST_DIR_PREFIX + "input/joran/callerData.xml");
+ StatusPrinter.print(loggerContext);
+
Logger logger = loggerContext.getLogger(this.getClass().getName());
String msg = "hello world";
logger.debug("toto");
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppenderTest.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppenderTest.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppenderTest.java Mon Jan 8 23:17:26 2007
@@ -86,7 +86,7 @@
assertEquals(1, appender.getContext().getStatusManager().getCount());
}
- private static Layout buildLayout(LoggerContext lc) {
+ private static Layout<LoggingEvent> buildLayout(LoggerContext lc) {
PatternLayout layout = new PatternLayout();
layout.setContext(lc);
layout.setFileHeader("Some header\n");
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppenderTestApp.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppenderTestApp.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppenderTestApp.java Mon Jan 8 23:17:26 2007
@@ -6,6 +6,7 @@
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.MDC;
import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.Layout;
import ch.qos.logback.core.util.StatusPrinter;
@@ -38,7 +39,7 @@
StatusPrinter.print(lc.getStatusManager());
}
- private static Layout buildLayout(LoggerContext lc) {
+ private static Layout<LoggingEvent> buildLayout(LoggerContext lc) {
PatternLayout layout = new PatternLayout();
layout.setContext(lc);
layout.setFileHeader("Some header\n");
1
0
Author: ceki
Date: Mon Jan 8 23:16:27 2007
New Revision: 1175
Modified:
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Appender.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/AppenderBase.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Layout.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/LayoutBase.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/WriterAppender.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/helpers/CyclicBuffer.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/html/HTMLLayoutBase.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractLayoutAction.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderAction.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderRefAction.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/ConversionRuleAction.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/layout/EchoLayout.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutBase.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/read/CyclicBufferAppender.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/read/ListAppender.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachable.java
logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachableImpl.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/AbstractAppenderTest.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/ConsoleAppenderTest.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppender.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppenderTest.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/FileAppenderTest.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/layout/DummyLayout.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/layout/NopLayout.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/AbstractPatternLayoutBaseTest.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayout.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayoutTest.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/RenamingTest.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeBasedRollingTest.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingTest.java
Log:
The Appender and Layout interfaces are now generic. This is a change with wide implications in the code.
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Appender.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Appender.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Appender.java Mon Jan 8 23:16:27 2007
@@ -14,7 +14,7 @@
import ch.qos.logback.core.spi.LifeCycle;
-public interface Appender extends LifeCycle, ContextAware, FilterAttachable {
+public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachable {
/**
* Get the name of this appender. The name uniquely identifies the appender.
@@ -26,17 +26,17 @@
* is of type Object.
* @param event
*/
- void doAppend(Object event);
+ void doAppend(E event);
/**
* Set the {@link Layout} for this appender.
*/
- public void setLayout(Layout layout);
+ public void setLayout(Layout<E> layout);
/**
* Returns this appenders layout.
*/
- public Layout getLayout();
+ public Layout<E> getLayout();
/**
* Set the name of this appender. The name is used by other components to
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/AppenderBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/AppenderBase.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/AppenderBase.java Mon Jan 8 23:16:27 2007
@@ -24,8 +24,8 @@
*
* @author Ceki Gülcü
*/
-abstract public class AppenderBase extends ContextAwareBase implements
- Appender, FilterAttachable {
+abstract public class AppenderBase<E> extends ContextAwareBase implements
+ Appender<E>, FilterAttachable {
protected boolean started = false;
@@ -52,7 +52,7 @@
static final int ALLOWED_REPEATS = 5;
- public synchronized void doAppend(Object eventObject) {
+ public synchronized void doAppend(E eventObject) {
// WARNING: The guard check MUST be the first statement in the
// doAppend() method.
@@ -89,7 +89,7 @@
}
}
- abstract protected void append(Object eventObject);
+ abstract protected void append(E eventObject);
/**
* Set the name of this appender.
@@ -130,10 +130,10 @@
return fai.getFilterChainDecision(event);
}
- public Layout getLayout() {
+ public Layout<E> getLayout() {
return null;
}
- public void setLayout(Layout layout) {
+ public void setLayout(Layout<E> layout) {
}
}
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java Mon Jan 8 23:16:27 2007
@@ -24,7 +24,7 @@
* @author Ceki Gülcü
*/
-public class ConsoleAppender extends WriterAppender {
+public class ConsoleAppender<E> extends WriterAppender<E> {
public static final String SYSTEM_OUT = "System.out";
public static final String SYSTEM_ERR = "System.err";
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java Mon Jan 8 23:16:27 2007
@@ -24,7 +24,7 @@
*
* @author Ceki Gülcü
*/
-public class FileAppender extends WriterAppender {
+public class FileAppender<E> extends WriterAppender<E> {
/**
* Append to or truncate the file? The default value for this variable is
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Layout.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Layout.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/Layout.java Mon Jan 8 23:16:27 2007
@@ -12,7 +12,7 @@
import ch.qos.logback.core.spi.ContextAware;
import ch.qos.logback.core.spi.LifeCycle;
-public interface Layout extends ContextAware, LifeCycle {
+public interface Layout<E> extends ContextAware, LifeCycle {
// Note that the line.separator property can be looked up even by applets.
public static final String LINE_SEP = System.getProperty("line.separator");
public static final int LINE_SEP_LEN = LINE_SEP.length();
@@ -28,7 +28,7 @@
* @param event The event to format
* @return the event formatted as a String
*/
- String doLayout(Object event);
+ String doLayout(E event);
/**
* Return the file header for this layout. The returned value may be null.
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/LayoutBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/LayoutBase.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/LayoutBase.java Mon Jan 8 23:16:27 2007
@@ -11,7 +11,7 @@
import ch.qos.logback.core.spi.ContextAwareBase;
-abstract public class LayoutBase extends ContextAwareBase implements Layout {
+abstract public class LayoutBase<E> extends ContextAwareBase implements Layout<E> {
Context context;
protected boolean started;
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/WriterAppender.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/WriterAppender.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/WriterAppender.java Mon Jan 8 23:16:27 2007
@@ -25,7 +25,7 @@
*
* @author Ceki Gülcü
*/
-public class WriterAppender extends AppenderBase {
+public class WriterAppender<E> extends AppenderBase<E> {
/**
* Immediate flush means that the underlying writer or output stream will be
@@ -58,7 +58,7 @@
* The layout variable does not need to be set if the appender implementation
* has its own layout.
*/
- protected Layout layout;
+ protected Layout<E> layout;
/**
* The default constructor does nothing.
@@ -115,7 +115,8 @@
}
}
- protected void append(Object eventObject) {
+ @Override
+ protected void append(E eventObject) {
if (!isStarted()) {
return;
}
@@ -192,14 +193,14 @@
* Set the layout for this appender. Note that some appenders have their own
* (fixed) layouts or do not use any.
*/
- public void setLayout(Layout layout) {
+ public void setLayout(Layout<E> layout) {
this.layout = layout;
}
/**
* Returns the layout of this appender. The value may be null.
*/
- public Layout getLayout() {
+ public Layout<E> getLayout() {
return layout;
}
@@ -275,7 +276,7 @@
*
* @since 0.9.0
*/
- protected void subAppend(Object event) {
+ protected void subAppend(E event) {
if (!isStarted()) {
return;
}
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/helpers/CyclicBuffer.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/helpers/CyclicBuffer.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/helpers/CyclicBuffer.java Mon Jan 8 23:16:27 2007
@@ -21,9 +21,9 @@
*
* @author Ceki Gülcü
*/
-public class CyclicBuffer {
+public class CyclicBuffer<E> {
- Object[] ea;
+ E[] ea;
int first;
int last;
int numElems;
@@ -37,13 +37,14 @@
* @param maxSize
* The maximum number of elements in the buffer.
*/
+ @SuppressWarnings("unchecked")
public CyclicBuffer(int maxSize) throws IllegalArgumentException {
if (maxSize < 1) {
throw new IllegalArgumentException("The maxSize argument (" + maxSize
+ ") is not a positive integer.");
}
this.maxSize = maxSize;
- ea = new Object[maxSize];
+ ea = (E[]) new Object[maxSize];
first = 0;
last = 0;
numElems = 0;
@@ -53,7 +54,7 @@
* Add an <code>event</code> as the last event in the buffer.
*
*/
- public void add(Object event) {
+ public void add(E event) {
ea[last] = event;
if (++last == maxSize)
last = 0;
@@ -85,8 +86,8 @@
* Get the oldest (first) element in the buffer. The oldest element is removed
* from the buffer.
*/
- public Object get() {
- Object r = null;
+ public E get() {
+ E r = null;
if (numElems > 0) {
numElems--;
r = ea[first];
@@ -111,6 +112,7 @@
* @throws IllegalArgumentException
* if <code>newSize</code> is negative.
*/
+ @SuppressWarnings("unchecked")
public void resize(int newSize) {
if (newSize < 0) {
throw new IllegalArgumentException("Negative array size [" + newSize
@@ -119,7 +121,8 @@
if (newSize == numElems)
return; // nothing to do
- Object[] temp = new Object[newSize];
+ //
+ E[] temp = (E[]) new Object[newSize];
int loopLen = newSize < numElems ? newSize : numElems;
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/html/HTMLLayoutBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/html/HTMLLayoutBase.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/html/HTMLLayoutBase.java Mon Jan 8 23:16:27 2007
@@ -14,7 +14,7 @@
*
* @author Sébastien Pennec
*/
-public abstract class HTMLLayoutBase extends LayoutBase {
+public abstract class HTMLLayoutBase<E> extends LayoutBase<E> {
protected String pattern;
@@ -81,7 +81,7 @@
}
if (errorCount == 0) {
- started = true;
+ super.started = true;
}
}
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java Mon Jan 8 23:16:27 2007
@@ -100,6 +100,7 @@
* Once the children elements are also parsed, now is the time to activate
* the evaluator options.
*/
+ @SuppressWarnings("unchecked")
public void end(InterpretationContext ec, String e) {
if (inError) {
return;
@@ -119,7 +120,7 @@
ec.popObject();
try {
- Map<String, EventEvaluator> evaluatorMap = (Map) context.getObject(CoreGlobal.EVALUATOR_MAP);
+ Map<String, EventEvaluator> evaluatorMap = (Map<String, EventEvaluator>) context.getObject(CoreGlobal.EVALUATOR_MAP);
evaluatorMap.put(evaluator.getName(), evaluator);
} catch (Exception ex) {
addError(
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractLayoutAction.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractLayoutAction.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractLayoutAction.java Mon Jan 8 23:16:27 2007
@@ -1,7 +1,7 @@
/**
* LOGBack: the generic, reliable, fast and flexible logging framework.
*
- * Copyright (C) 1999-2006, QOS.ch
+ * Copyright (C) 1999-2007, QOS.ch
*
* This library is free software, you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
@@ -20,35 +20,28 @@
import ch.qos.logback.core.spi.LifeCycle;
import ch.qos.logback.core.util.OptionHelper;
-
-
-abstract public class AbstractLayoutAction extends Action {
- Layout layout;
+abstract public class AbstractLayoutAction<E> extends Action {
+ Layout<E> layout;
boolean inError = false;
/**
* Instantiates an layout of the given class and sets its name.
*
*/
+ @SuppressWarnings("unchecked")
public void begin(InterpretationContext ec, String name, Attributes attributes) {
// Let us forget about previous errors (in this object)
inError = false;
String className = attributes.getValue(CLASS_ATTRIBUTE);
try {
- layout = (Layout)
+ layout = (Layout<E>)
OptionHelper.instantiateByClassName(
className, ch.qos.logback.core.Layout.class, context);
- if(isOfCorrectType(layout)) {
layout.setContext(this.context);
//getLogger().debug("Pushing layout on top of the object stack.");
ec.pushObject(layout);
- } else {
- inError = true;
- addError("Layout of class ["+className+"] is not of the desired type");
- }
-
} catch (Exception oops) {
inError = true;
addError("Could not create layout of type " + className + "].", oops);
@@ -60,12 +53,13 @@
* @param layout
* @return true if the layout is of the correct type
*/
- abstract protected boolean isOfCorrectType(Layout layout);
+ //abstract protected boolean isOfCorrectType(Layout layout);
/**
* Once the children elements are also parsed, now is the time to activate
* the appender options.
*/
+ @SuppressWarnings("unchecked")
public void end(InterpretationContext ec, String e) {
if (inError) {
return;
@@ -86,7 +80,7 @@
try {
//getLogger().debug(
// "About to set the layout of the containing appender.");
- Appender appender = (Appender) ec.peekObject();
+ Appender<E> appender = (Appender<E>) ec.peekObject();
appender.setLayout(layout);
} catch (Exception ex) {
addError(
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderAction.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderAction.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderAction.java Mon Jan 8 23:16:27 2007
@@ -22,7 +22,7 @@
-public class AppenderAction extends Action {
+public class AppenderAction<E> extends Action {
Appender appender;
private boolean inError = false;
@@ -31,6 +31,7 @@
*
* The appender thus generated is placed in the ExecutionContext appender bag.
*/
+ @SuppressWarnings("unchecked")
public void begin(
InterpretationContext ec, String localName, Attributes attributes) throws ActionException {
String className = attributes.getValue(CLASS_ATTRIBUTE);
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderRefAction.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderRefAction.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderRefAction.java Mon Jan 8 23:16:27 2007
@@ -24,6 +24,7 @@
public class AppenderRefAction extends Action {
boolean inError = false;
+ @SuppressWarnings("unchecked")
public void begin(InterpretationContext ec, String tagName, Attributes attributes) {
// Let us forget about previous errors (in this object)
inError = false;
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/ConversionRuleAction.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/ConversionRuleAction.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/joran/action/ConversionRuleAction.java Mon Jan 8 23:16:27 2007
@@ -28,6 +28,7 @@
* Instantiates an layout of the given class and sets its name.
*
*/
+ @SuppressWarnings("unchecked")
public void begin(InterpretationContext ec, String localName, Attributes attributes) {
// Let us forget about previous errors (in this object)
inError = false;
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/layout/EchoLayout.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/layout/EchoLayout.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/layout/EchoLayout.java Mon Jan 8 23:16:27 2007
@@ -17,9 +17,9 @@
*
* @author Ceki
*/
-public class EchoLayout extends LayoutBase {
+public class EchoLayout<E> extends LayoutBase<E> {
- public String doLayout(Object event) {
+ public String doLayout(E event) {
return event+Layout.LINE_SEP;
}
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java Mon Jan 8 23:16:27 2007
@@ -39,10 +39,10 @@
* @author Sébastien Pennec
*
*/
-public abstract class SMTPAppenderBase extends AppenderBase {
+public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
- protected Layout layout;
- protected Layout subjectLayout;
+ protected Layout<E> layout;
+ protected Layout<E> subjectLayout;
private List<String> to = new ArrayList<String>();
private String from;
@@ -62,7 +62,7 @@
*
* @return a layout as appropriate for the module
*/
- abstract protected Layout makeSubjectLayout(String subjectStr);
+ abstract protected Layout<E> makeSubjectLayout(String subjectStr);
/**
* Start the appender
@@ -99,7 +99,7 @@
* Perform SMTPAppender specific appending actions, delegating some of them to
* a subclass and checking if the event triggers an e-mail to be sent.
*/
- protected void append(Object eventObject) {
+ protected void append(E eventObject) {
if (!checkEntryConditions()) {
return;
@@ -116,7 +116,7 @@
}
}
- abstract protected void subAppend(Object eventObject);
+ abstract protected void subAppend(E eventObject);
/**
* This method determines if there is a sense in attempting to append.
@@ -192,7 +192,7 @@
/**
* Send the contents of the cyclic buffer as an e-mail message.
*/
- protected void sendBuffer(Object lastEventObject) {
+ protected void sendBuffer(E lastEventObject) {
// Note: this code already owns the monitor for this
// appender. This frees us from needing to synchronize on 'cb'.
@@ -311,11 +311,11 @@
this.eventEvaluator = eventEvaluator;
}
- public Layout getLayout() {
+ public Layout<E> getLayout() {
return layout;
}
- public void setLayout(Layout layout) {
+ public void setLayout(Layout<E> layout) {
this.layout = layout;
}
}
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java Mon Jan 8 23:16:27 2007
@@ -27,7 +27,7 @@
* @author Sébastien Pennec
*/
-public abstract class SocketAppenderBase extends AppenderBase {
+public abstract class SocketAppenderBase<E> extends AppenderBase<E> {
/**
* The default port number of remote logging server (4560).
@@ -143,7 +143,7 @@
}
@Override
- protected void append(Object event) {
+ protected void append(E event) {
if (event == null)
return;
@@ -177,7 +177,7 @@
}
}
- protected abstract void postProcessEvent(Object event);
+ protected abstract void postProcessEvent(E event);
void fireConnector() {
if (connector == null) {
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java Mon Jan 8 23:16:27 2007
@@ -7,9 +7,9 @@
import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.core.Layout;
-public abstract class SyslogAppenderBase extends AppenderBase {
+public abstract class SyslogAppenderBase<E> extends AppenderBase<E> {
- Layout layout;
+ Layout<E> layout;
int facility;
String facilityStr;
String syslogHost;
@@ -45,12 +45,12 @@
}
}
- abstract public Layout buildLayout(String facilityStr);
+ abstract public Layout<E> buildLayout(String facilityStr);
abstract public int getSeverityForEvent(Object eventObject);
@Override
- protected void append(Object eventObject) {
+ protected void append(E eventObject) {
if (!isStarted()) {
return;
}
@@ -185,11 +185,11 @@
/**
* You can override
*/
- public Layout getLayout() {
+ public Layout<E> getLayout() {
return layout;
}
- public void setLayout(Layout layout) {
+ public void setLayout(Layout<E> layout) {
this.layout = layout;
}
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutBase.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutBase.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutBase.java Mon Jan 8 23:16:27 2007
@@ -23,7 +23,7 @@
import ch.qos.logback.core.status.StatusManager;
-abstract public class PatternLayoutBase extends LayoutBase {
+abstract public class PatternLayoutBase<E> extends LayoutBase<E> {
Converter head;
String pattern;
@@ -42,6 +42,7 @@
* Returns a map where the default converter map is merged with the map
* contained in the context.
*/
+ @SuppressWarnings("unchecked")
public Map<String, String> getEffectiveConverterMap() {
Map<String, String> effectiveMap = new HashMap<String, String>();
@@ -108,7 +109,7 @@
}
}
- protected String writeLoopOnConverters(Object event) {
+ protected String writeLoopOnConverters(E event) {
StringBuffer buf = new StringBuffer(128);
Converter c = head;
while (c != null) {
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/read/CyclicBufferAppender.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/read/CyclicBufferAppender.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/read/CyclicBufferAppender.java Mon Jan 8 23:16:27 2007
@@ -19,13 +19,13 @@
*
* @author Ceki Gulcu
*/
-public class CyclicBufferAppender extends AppenderBase {
+public class CyclicBufferAppender<E> extends AppenderBase<E> {
- CyclicBuffer cb;
+ CyclicBuffer<E> cb;
int maxSize = 512;
public void start() {
- cb = new CyclicBuffer(maxSize);
+ cb = new CyclicBuffer<E>(maxSize);
super.start();
}
@@ -35,7 +35,7 @@
}
@Override
- protected void append(Object eventObject) {
+ protected void append(E eventObject) {
if (!isStarted()) {
return;
}
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/read/ListAppender.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/read/ListAppender.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/read/ListAppender.java Mon Jan 8 23:16:27 2007
@@ -14,12 +14,11 @@
import ch.qos.logback.core.AppenderBase;
-public class ListAppender extends AppenderBase {
+public class ListAppender<E> extends AppenderBase<E> {
- public List list = new ArrayList();
+ public List<E> list = new ArrayList<E>();
- @SuppressWarnings("unchecked")
- protected void append(Object o) {
- list.add(o);
+ protected void append(E e) {
+ list.add(e);
}
}
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java Mon Jan 8 23:16:27 2007
@@ -27,7 +27,7 @@
* @author Ceki Gülcü
* @since 1.3
* */
-public class RollingFileAppender extends FileAppender {
+public class RollingFileAppender<E> extends FileAppender<E> {
File activeFileCache;
TriggeringPolicy triggeringPolicy;
RollingPolicy rollingPolicy;
@@ -109,7 +109,7 @@
This method differentiates RollingFileAppender from its super
class.
*/
- protected void subAppend(Object event) {
+ protected void subAppend(E event) {
// The roll-over check must precede actual writing. This is the
// only correct behavior for time driven triggers.
if (triggeringPolicy.isTriggeringEvent(activeFileCache, event)) {
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachable.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachable.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachable.java Mon Jan 8 23:16:27 2007
@@ -18,11 +18,11 @@
*
* @author Ceki Gülcü
*/
-public interface AppenderAttachable {
+public interface AppenderAttachable<E> {
/**
* Add an appender.
*/
- public void addAppender(Appender newAppender);
+ public void addAppender(Appender<E> newAppender);
/**
* Get an iterator for appenders contained in the parent object.
@@ -32,13 +32,13 @@
/**
* Get an appender by name.
*/
- public Appender getAppender(String name);
+ public Appender<E> getAppender(String name);
/**
* Returns <code>true</code> if the specified appender is in list of
* attached attached, <code>false</code> otherwise.
*/
- public boolean isAttached(Appender appender);
+ public boolean isAttached(Appender<E> appender);
/**
* Detach all previously added appenders.
@@ -48,7 +48,7 @@
/**
* Detach the appender passed as parameter from the list of appenders.
*/
- boolean detachAppender(Appender appender);
+ boolean detachAppender(Appender<E> appender);
/**
* Detach the appender with the name passed as parameter from the list of
Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachableImpl.java
==============================================================================
--- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachableImpl.java (original)
+++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachableImpl.java Mon Jan 8 23:16:27 2007
@@ -20,15 +20,15 @@
*
* @author Ceki Gülcü
*/
-public class AppenderAttachableImpl implements AppenderAttachable {
+public class AppenderAttachableImpl<E> implements AppenderAttachable<E> {
- final private List<Appender> appenderList = new ArrayList<Appender>();
+ final private List<Appender<E>> appenderList = new ArrayList<Appender<E>>();
/**
* Attach an appender. If the appender is already in the list in won't be
* added again.
*/
- public void addAppender(Appender newAppender) {
+ public void addAppender(Appender<E> newAppender) {
// Null values for newAppender parameter are strictly forbidden.
if (newAppender == null) {
throw new IllegalArgumentException("Cannot null as an appener");
@@ -41,14 +41,14 @@
/**
* Call the <code>doAppend</code> method on all attached appenders.
*/
- public int appendLoopOnAppenders(Object o) {
+ public int appendLoopOnAppenders(E e) {
int size = 0;
- Appender appender;
+ Appender<E> appender;
size = appenderList.size();
for (int i = 0; i < size; i++) {
- appender = (Appender) appenderList.get(i);
- appender.doAppend(o);
+ appender = (Appender<E>) appenderList.get(i);
+ appender.doAppend(e);
}
return size;
}
@@ -70,16 +70,16 @@
* Return the appender with that name if in the list. Return null otherwise.
*
*/
- public Appender getAppender(String name) {
+ public Appender<E> getAppender(String name) {
if (name == null) {
return null;
}
int size = appenderList.size();
- Appender appender;
+ Appender<E> appender;
for (int i = 0; i < size; i++) {
- appender = (Appender) appenderList.get(i);
+ appender = appenderList.get(i);
if (name.equals(appender.getName())) {
return appender;
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/AbstractAppenderTest.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/AbstractAppenderTest.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/AbstractAppenderTest.java Mon Jan 8 23:16:27 2007
@@ -19,14 +19,14 @@
-abstract public class AbstractAppenderTest extends TestCase {
+abstract public class AbstractAppenderTest<E> extends TestCase {
AbstractAppenderTest(String arg) {
super(arg);
}
- abstract protected AppenderBase getAppender();
- abstract protected AppenderBase getConfiguredAppender();
+ abstract protected AppenderBase<E> getAppender();
+ abstract protected AppenderBase<E> getConfiguredAppender();
public void testNewAppender() {
// new appenders should be inactive
@@ -45,11 +45,12 @@
}
public void testNoStart() {
- AppenderBase appender = getAppender();
+ AppenderBase<E> appender = getAppender();
Context context = new ContextBase();
appender.setContext(context);
appender.setName("doh");
- appender.doAppend(new Object());
+ // is null OK?
+ appender.doAppend(null);
StatusChecker checker = new StatusChecker(context.getStatusManager());
//StatusPrinter.print(context.getStatusManager());
assertTrue(checker.containsMatch("Attempted to append to non started appender \\[doh\\]."));
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/ConsoleAppenderTest.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/ConsoleAppenderTest.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/ConsoleAppenderTest.java Mon Jan 8 23:16:27 2007
@@ -23,7 +23,7 @@
import ch.qos.logback.core.util.TeeOutputStream;
-public class ConsoleAppenderTest extends AbstractAppenderTest {
+public class ConsoleAppenderTest extends AbstractAppenderTest<Object> {
TeeOutputStream tee;
PrintStream original;
@@ -52,28 +52,29 @@
System.setOut(original);
}
- protected AppenderBase getAppender() {
- return new ConsoleAppender();
- }
-
- protected AppenderBase getConfiguredAppender() {
- ConsoleAppender ca = new ConsoleAppender();
- ca.setLayout(new NopLayout());
+ @Override
+ protected AppenderBase<Object> getAppender() {
+ return new ConsoleAppender<Object>();
+ }
+
+ protected AppenderBase<Object> getConfiguredAppender() {
+ ConsoleAppender<Object> ca = new ConsoleAppender<Object>();
+ ca.setLayout(new NopLayout<Object>());
ca.start();
return ca;
}
public void testBasic() {
- ConsoleAppender ca = (ConsoleAppender) getAppender();
- ca.setLayout(new DummyLayout());
+ ConsoleAppender<Object> ca = (ConsoleAppender<Object>) getAppender();
+ ca.setLayout(new DummyLayout<Object>());
ca.start();
ca.doAppend(new Object());
assertEquals(DummyLayout.DUMMY, tee.toString());
}
public void testOpen() {
- ConsoleAppender ca = (ConsoleAppender) getAppender();
- DummyLayout dummyLayout = new DummyLayout();
+ ConsoleAppender<Object> ca = (ConsoleAppender<Object>) getAppender();
+ DummyLayout<Object> dummyLayout = new DummyLayout<Object>();
dummyLayout.setFileHeader("open");
ca.setLayout(dummyLayout);
ca.start();
@@ -82,8 +83,8 @@
assertEquals("open"+Layout.LINE_SEP+DummyLayout.DUMMY, tee.toString());
}
public void testClose() {
- ConsoleAppender ca = (ConsoleAppender) getAppender();
- DummyLayout dummyLayout = new DummyLayout();
+ ConsoleAppender<Object> ca = (ConsoleAppender<Object>) getAppender();
+ DummyLayout<Object> dummyLayout = new DummyLayout<Object>();
dummyLayout.setFileFooter("closed");
ca.setLayout(dummyLayout);
ca.start();
@@ -96,8 +97,8 @@
public void testUTF16BE() throws UnsupportedEncodingException {
- ConsoleAppender ca = (ConsoleAppender) getAppender();
- ca.setLayout(new DummyLayout());
+ ConsoleAppender<Object> ca = (ConsoleAppender<Object>) getAppender();
+ ca.setLayout(new DummyLayout<Object>());
String encodingName = "UTF-16BE";
ca.setEncoding(encodingName);
ca.start();
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppender.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppender.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppender.java Mon Jan 8 23:16:27 2007
@@ -13,7 +13,7 @@
import ch.qos.logback.core.WriterAppender;
-public class DummyAppender extends WriterAppender {
+public class DummyAppender<E> extends WriterAppender<E> {
DummyAppender(Writer writer) {
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppenderTest.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppenderTest.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppenderTest.java Mon Jan 8 23:16:27 2007
@@ -27,16 +27,16 @@
}
protected AppenderBase getConfiguredAppender() {
- DummyAppender da = new DummyAppender(new StringWriter());
- da.setLayout(new NopLayout());
+ DummyAppender<Object> da = new DummyAppender<Object>(new StringWriter());
+ da.setLayout(new NopLayout<Object>());
da.start();
return da;
}
public void testBasic() {
StringWriter sw = new StringWriter();
- DummyAppender da = new DummyAppender(sw);
- da.setLayout(new DummyLayout());
+ DummyAppender<Object> da = new DummyAppender<Object>(sw);
+ da.setLayout(new DummyLayout<Object>());
da.start();
da.doAppend(new Object());
assertEquals(DummyLayout.DUMMY, sw.getBuffer().toString());
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/FileAppenderTest.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/FileAppenderTest.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/appender/FileAppenderTest.java Mon Jan 8 23:16:27 2007
@@ -35,8 +35,8 @@
}
protected AppenderBase getConfiguredAppender() {
- FileAppender appender = new FileAppender();
- appender.setLayout(new NopLayout());
+ FileAppender<Object> appender = new FileAppender<Object>();
+ appender.setLayout(new NopLayout<Object>());
appender.setFile("temp.log");
appender.setName("temp.log");
appender.setContext(new ContextBase());
@@ -45,8 +45,8 @@
}
public void test() {
- FileAppender appender = new FileAppender();
- appender.setLayout(new DummyLayout());
+ FileAppender<Object> appender = new FileAppender<Object>();
+ appender.setLayout(new DummyLayout<Object>());
appender.setAppend(false);
appender.setFile("temp.log");
appender.setName("temp.log");
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/layout/DummyLayout.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/layout/DummyLayout.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/layout/DummyLayout.java Mon Jan 8 23:16:27 2007
@@ -11,11 +11,11 @@
import ch.qos.logback.core.LayoutBase;
-public class DummyLayout extends LayoutBase {
+public class DummyLayout<E> extends LayoutBase<E> {
public static final String DUMMY = "dummy"+LINE_SEP;
- public String doLayout(Object event) {
+ public String doLayout(E event) {
return DUMMY;
}
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/layout/NopLayout.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/layout/NopLayout.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/layout/NopLayout.java Mon Jan 8 23:16:27 2007
@@ -11,9 +11,9 @@
import ch.qos.logback.core.LayoutBase;
-public class NopLayout extends LayoutBase {
+public class NopLayout<E> extends LayoutBase<E> {
- public String doLayout(Object event) {
+ public String doLayout(E event) {
return "";
}
}
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/AbstractPatternLayoutBaseTest.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/AbstractPatternLayoutBaseTest.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/AbstractPatternLayoutBaseTest.java Mon Jan 8 23:16:27 2007
@@ -20,18 +20,18 @@
import ch.qos.logback.core.util.StatusPrinter;
-abstract public class AbstractPatternLayoutBaseTest extends TestCase {
+abstract public class AbstractPatternLayoutBaseTest<E> extends TestCase {
public AbstractPatternLayoutBaseTest(String arg0) {
super(arg0);
}
- abstract public PatternLayoutBase getPatternLayoutBase();
- abstract public Object getEventObject();
+ abstract public PatternLayoutBase<E> getPatternLayoutBase();
+ abstract public E getEventObject();
abstract public Context getContext();
-
+
public void testUnStarted() {
- PatternLayoutBase plb = getPatternLayoutBase();
+ PatternLayoutBase<E> plb = getPatternLayoutBase();
Context context = new ContextBase();
plb.setContext(context);
String s = plb.doLayout(getEventObject());
@@ -46,7 +46,7 @@
* method is called before being started.
*/
public void testConverterStart() {
- PatternLayoutBase plb = getPatternLayoutBase();
+ PatternLayoutBase<E> plb = getPatternLayoutBase();
plb.setContext(getContext());
plb.getInstanceConverterMap().put("EX", ExceptionalConverter.class.getName());
plb.setPattern("%EX");
@@ -57,7 +57,7 @@
}
public void testStarted() {
- PatternLayoutBase plb = getPatternLayoutBase();
+ PatternLayoutBase<E> plb = getPatternLayoutBase();
Context context = new ContextBase();
plb.setContext(context);
String s = plb.doLayout(getEventObject());
@@ -68,7 +68,7 @@
public void testNullPattern() {
//System.out.println("testNullPattern");
- PatternLayoutBase plb = getPatternLayoutBase();
+ PatternLayoutBase<E> plb = getPatternLayoutBase();
Context context = new ContextBase();
plb.setContext(context);
plb.start();
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayout.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayout.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayout.java Mon Jan 8 23:16:27 2007
@@ -18,7 +18,7 @@
-public class SamplePatternLayout extends PatternLayoutBase {
+public class SamplePatternLayout<E> extends PatternLayoutBase<E> {
Map<String, String> converterMap = new HashMap<String, String>();
@@ -31,7 +31,7 @@
return converterMap;
}
- public String doLayout(Object event) {
+ public String doLayout(E event) {
return writeLoopOnConverters(event);
}
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayoutTest.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayoutTest.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayoutTest.java Mon Jan 8 23:16:27 2007
@@ -22,8 +22,8 @@
}
- public PatternLayoutBase getPatternLayoutBase() {
- return new SamplePatternLayout();
+ public PatternLayoutBase<Object> getPatternLayoutBase() {
+ return new SamplePatternLayout<Object>();
}
public Object getEventObject() {
@@ -31,7 +31,7 @@
}
public void testOK() {
- PatternLayoutBase plb = getPatternLayoutBase();
+ PatternLayoutBase<Object> plb = getPatternLayoutBase();
Context context = new ContextBase();
plb.setContext(context);
plb.setPattern("x%OTT");
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/RenamingTest.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/RenamingTest.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/RenamingTest.java Mon Jan 8 23:16:27 2007
@@ -32,7 +32,7 @@
*/
public class RenamingTest extends TestCase {
- Layout layout;
+ Layout<Object> layout;
Context context = new ContextBase();
public RenamingTest(String arg0) {
@@ -41,7 +41,7 @@
protected void setUp() throws Exception {
super.setUp();
- layout = new EchoLayout();
+ layout = new EchoLayout<Object>();
File target = new File(Constants.TEST_DIR_PREFIX + "output/test.log");
target.mkdirs();
@@ -54,7 +54,7 @@
public void testRename() throws Exception {
- RollingFileAppender rfa = new RollingFileAppender();
+ RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
rfa.setLayout(layout);
rfa.setContext(context);
rfa.setFile(Constants.TEST_DIR_PREFIX + "output/test.log");
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeBasedRollingTest.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeBasedRollingTest.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeBasedRollingTest.java Mon Jan 8 23:16:27 2007
@@ -67,8 +67,8 @@
// We purposefully use the \n as the line separator.
// This makes the regression test system independent.
Context context = new ContextBase();
- Layout layout = new DummyLayout();
- RollingFileAppender rfa = new RollingFileAppender();
+ Layout<Object> layout = new DummyLayout<Object>();
+ RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
rfa.setLayout(layout);
rfa.setContext(new ContextBase());
@@ -98,8 +98,8 @@
public void test2() throws Exception {
Context context = new ContextBase();
- DummyLayout layout = new DummyLayout();
- RollingFileAppender rfa = new RollingFileAppender();
+ DummyLayout<Object> layout = new DummyLayout<Object>();
+ RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
rfa.setName("ROLLING");
rfa.setLayout(layout);
rfa.setContext(context);
@@ -172,8 +172,8 @@
*/
public void test3() throws Exception {
Context context = new ContextBase();
- DummyLayout layout = new DummyLayout();
- RollingFileAppender rfa = new RollingFileAppender();
+ DummyLayout<Object> layout = new DummyLayout<Object>();
+ RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
rfa.setLayout(layout);
rfa.setContext(context);
rfa.setFile(Constants.TEST_DIR_PREFIX + "output/sbr-test3.log");
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingTest.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingTest.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingTest.java Mon Jan 8 23:16:27 2007
@@ -48,7 +48,7 @@
static final String DATE_PATTERN = "yyyy-MM-dd_HH_mm_ss";
- EchoLayout layout = new EchoLayout();
+ EchoLayout<Object> layout = new EchoLayout<Object>();
Context context = new ContextBase();
public TimeBasedRollingTest(String name) {
@@ -83,7 +83,7 @@
*/
public void test1() throws Exception {
- RollingFileAppender rfa = new RollingFileAppender();
+ RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
rfa.setContext(context);
rfa.setLayout(layout);
@@ -130,7 +130,7 @@
* No compression, with stop/restart, file option left blank
*/
public void test2() throws Exception {
- RollingFileAppender rfa1 = new RollingFileAppender();
+ RollingFileAppender<Object> rfa1 = new RollingFileAppender<Object>();
rfa1.setContext(context);
rfa1.setLayout(layout);
@@ -165,7 +165,7 @@
rfa1.stop();
- RollingFileAppender rfa2 = new RollingFileAppender();
+ RollingFileAppender<Object> rfa2 = new RollingFileAppender<Object>();
rfa2.setContext(context);
rfa2.setLayout(layout);
@@ -193,7 +193,7 @@
* With compression, file option left blank, no stop/restart
*/
public void test3() throws Exception {
- RollingFileAppender rfa = new RollingFileAppender();
+ RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
rfa.setContext(context);
rfa.setLayout(layout);
@@ -245,7 +245,7 @@
* Without compression, file option set, with stop/restart
*/
public void test4() throws Exception {
- RollingFileAppender rfa1 = new RollingFileAppender();
+ RollingFileAppender<Object> rfa1 = new RollingFileAppender<Object>();
rfa1.setContext(context);
rfa1.setLayout(layout);
rfa1.setFile(Constants.TEST_DIR_PREFIX + "output/test4.log");
@@ -283,7 +283,7 @@
rfa1.stop();
- RollingFileAppender rfa2 = new RollingFileAppender();
+ RollingFileAppender<Object> rfa2 = new RollingFileAppender<Object>();
rfa2.setContext(context);
rfa2.setLayout(layout);
rfa2.setFile(Constants.TEST_DIR_PREFIX + "output/test4.log");
@@ -313,7 +313,7 @@
* No compression, file option set, without stop/restart
*/
public void test5() throws Exception {
- RollingFileAppender rfa = new RollingFileAppender();
+ RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
rfa.setContext(context);
rfa.setLayout(layout);
rfa.setFile(Constants.TEST_DIR_PREFIX + "output/test5.log");
@@ -360,7 +360,7 @@
* With compression, file option set, no stop/restart,
*/
public void test6() throws Exception {
- RollingFileAppender rfa = new RollingFileAppender();
+ RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
rfa.setContext(context);
rfa.setLayout(layout);
rfa.setFile(Constants.TEST_DIR_PREFIX + "output/test6.log");
1
0

svn commit: r1174 - logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/jmx
by noreply.seb@qos.ch 08 Jan '07
by noreply.seb@qos.ch 08 Jan '07
08 Jan '07
Author: seb
Date: Mon Jan 8 21:41:46 2007
New Revision: 1174
Modified:
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/jmx/Configurator.java
Log:
Corrected setLevel method
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/jmx/Configurator.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/jmx/Configurator.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/jmx/Configurator.java Mon Jan 8 21:41:46 2007
@@ -27,9 +27,12 @@
public void reload(String fileName) throws JoranException {
LoggerContext lc = (LoggerContext) context;
+ addInfo("Shutting down context: " + lc.getName());
+ lc.shutdownAndReset();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
configurator.doConfigure(fileName);
+ addInfo("Context: " + lc.getName() + " reloaded.");
}
public void reload(URL url) throws JoranException {
@@ -41,7 +44,18 @@
}
public void setLoggerLevel(String loggerName, String levelStr) {
+ if (loggerName == null) {
+ return;
+ }
+ if (levelStr == null) {
+ return;
+ }
+ loggerName = loggerName.trim();
+ levelStr = levelStr.trim();
+
+ addInfo("Trying to set level " + levelStr + " to logger " + loggerName);
LoggerContext lc = (LoggerContext) context;
+
Logger logger = lc.getLogger(loggerName);
if ("null".equalsIgnoreCase(levelStr)) {
logger.setLevel(null);
1
0

svn commit: r1173 - in logback/trunk: logback-examples/src/main/java/chapter1 logback-site/src/site/xdocTemplates
by noreply.seb@qos.ch 08 Jan '07
by noreply.seb@qos.ch 08 Jan '07
08 Jan '07
Author: seb
Date: Mon Jan 8 20:14:45 2007
New Revision: 1173
Modified:
logback/trunk/logback-examples/src/main/java/chapter1/sample-config-2.xml
logback/trunk/logback-examples/src/main/java/chapter1/sample-config-3.xml
logback/trunk/logback-site/src/site/xdocTemplates/shortIntro.xml
Log:
minor modifications
Modified: logback/trunk/logback-examples/src/main/java/chapter1/sample-config-2.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter1/sample-config-2.xml (original)
+++ logback/trunk/logback-examples/src/main/java/chapter1/sample-config-2.xml Mon Jan 8 20:14:45 2007
@@ -5,19 +5,16 @@
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
- <param name="pattern"
- value="%-4relative [%thread] %-5level %class - %msg%n" />
+ <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
</layout>
</appender>
<appender name="FILE"
class="ch.qos.logback.core.FileAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
- <param name="pattern"
- value="%-4relative [%thread] %-5level %class - %msg%n" />
+ <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
</layout>
- <param name="File"
- value="sample-log.txt" />
+ <File>sample-log.txt</File>
</appender>
<root>
Modified: logback/trunk/logback-examples/src/main/java/chapter1/sample-config-3.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter1/sample-config-3.xml (original)
+++ logback/trunk/logback-examples/src/main/java/chapter1/sample-config-3.xml Mon Jan 8 20:14:45 2007
@@ -5,21 +5,18 @@
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
- <param name="pattern"
- value="%-4relative [%thread] %-5level %class - %msg%n" />
+ <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
</layout>
</appender>
<appender name="FILE"
class="ch.qos.logback.core.FileAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
- <param name="pattern"
- value="%-4relative [%thread] %-5level %class - %msg%n" />
+ <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
</layout>
- <param name="File"
- value="sample-log.txt" />
+ <File>sample-log.txt</File>
</appender>
-
+
<logger name="chapter1">
<level value="info" />
</logger>
Modified: logback/trunk/logback-site/src/site/xdocTemplates/shortIntro.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/shortIntro.xml (original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/shortIntro.xml Mon Jan 8 20:14:45 2007
@@ -1122,7 +1122,7 @@
<p>To run this examle, use this command:</p>
-<div class="source"><pre>java chapter1.MyApp <b>HOW ABOUT PATH?</b>sample-config-1.xml</pre></div>
+<div class="source"><pre>java chapter1.MyApp src/main/java/chapter1/sample-config-1.xml</pre></div>
<p>The console output will be exactly the same as before. However,
this time, we didn't need to import and call the BasicConfigurator
@@ -1148,32 +1148,29 @@
<em>Example 1.5: Logback configuration from file (logback-examples/src/main/java/chapter1/sample-config-2.xml)</em>
<div class="source"><pre><?xml version="1.0" encoding="UTF-8" ?>
-<configuration>
+<configuration>
<appender name="STDOUT"
- class="ch.qos.logback.core.ConsoleAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <param name="pattern"
- value="%-4relative [%thread] %-5level %class - %msg%n" />
- </layout>
- </appender>
+ class="ch.qos.logback.core.ConsoleAppender">
+ <layout class="ch.qos.logback.classic.PatternLayout">
+ <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
+ </layout>
+ </appender>
<appender name="FILE"
- class="ch.qos.logback.core.FileAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <param name="pattern"
- value="%-4relative [%thread] %-5level %class - %msg%n" />
- </layout>
- <param name="File"
- value="sample-log.txt" />
- </appender>
-
- <root>
- <level value="debug" />
- <appender-ref ref="STDOUT" />
- <appender-ref ref="FILE" />
- </root>
-</configuration></pre></div>
+ class="ch.qos.logback.core.FileAppender">
+ <layout class="ch.qos.logback.classic.PatternLayout">
+ <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
+ </layout>
+ <File>sample-log.txt</File>
+ </appender>
+
+ <root>
+ <level value="debug" />
+ <appender-ref ref="STDOUT" />
+ <appender-ref ref="FILE" />
+ </root>
+</configuration></pre></div>
<p>Now, all the logging statements are directed to the console and
to a file named <em>sample-log.txt</em>. As you can see, the
@@ -1194,22 +1191,19 @@
<configuration>
<appender name="STDOUT"
- class="ch.qos.logback.core.ConsoleAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <param name="pattern"
- value="%-4relative [%thread] %-5level %class - %msg%n" />
- </layout>
- </appender>
+ class="ch.qos.logback.core.ConsoleAppender">
+ <layout class="ch.qos.logback.classic.PatternLayout">
+ <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
+ </layout>
+ </appender>
<appender name="FILE"
- class="ch.qos.logback.core.FileAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <param name="pattern"
- value="%-4relative [%thread] %-5level %class - %msg%n" />
- </layout>
- <param name="File"
- value="sample-log.txt" />
- </appender>
+ class="ch.qos.logback.core.FileAppender">
+ <layout class="ch.qos.logback.classic.PatternLayout">
+ <pattern>%-4relative [%thread] %-5level %class - %msg%n</pattern>
+ </layout>
+ <File>sample-log.txt</File>
+ </appender>
<b>
<logger name="chapter1">
<level value="info" />
1
0

svn commit: r1172 - in logback/trunk: logback-examples/src/main/java/chapter6 logback-site/src/site/xdocTemplates/manual
by noreply.seb@qos.ch 08 Jan '07
by noreply.seb@qos.ch 08 Jan '07
08 Jan '07
Author: seb
Date: Mon Jan 8 16:15:25 2007
New Revision: 1172
Added:
logback/trunk/logback-examples/src/main/java/chapter6/basicConfiguration.xml
logback/trunk/logback-examples/src/main/java/chapter6/thresholdFilterConfig.xml
Modified:
logback/trunk/logback-examples/src/main/java/chapter6/FilterEvents.java
logback/trunk/logback-examples/src/main/java/chapter6/basicEventEvaluator.xml
logback/trunk/logback-site/src/site/xdocTemplates/manual/filters.xml
Log:
Added filter examples
Added/modified doc about LevelFilter and ThresholdFilter
Modified: logback/trunk/logback-examples/src/main/java/chapter6/FilterEvents.java
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter6/FilterEvents.java (original)
+++ logback/trunk/logback-examples/src/main/java/chapter6/FilterEvents.java Mon Jan 8 16:15:25 2007
@@ -13,6 +13,11 @@
public class FilterEvents {
public static void main(String[] args) throws InterruptedException {
+ if (args.length == 0) {
+ System.out.println("A configuration file must be passed as a parameter.");
+ return;
+ }
+
Logger logger = (Logger) LoggerFactory.getLogger(FilterEvents.class);
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
@@ -32,12 +37,10 @@
MDC.remove("username");
} else if (i == 6) {
Marker billing = MarkerFactory.getMarker("billing");
- logger.error(billing, "logging statement " + i);
+ logger.error(billing, "billing statement " + i);
} else {
logger.info("logging statement " + i);
}
}
-
- //StatusPrinter.print(lc.getStatusManager());
}
}
Added: logback/trunk/logback-examples/src/main/java/chapter6/basicConfiguration.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter6/basicConfiguration.xml Mon Jan 8 16:15:25 2007
@@ -0,0 +1,16 @@
+<configuration>
+
+ <appender name="STDOUT"
+ class="ch.qos.logback.core.ConsoleAppender">
+ <layout class="ch.qos.logback.classic.PatternLayout">
+ <pattern>
+ %-4relative [%thread] %-5level %logger - %msg%n
+ </pattern>
+ </layout>
+ </appender>
+
+ <root>
+ <level value="DEBUG" />
+ <appender-ref ref="STDOUT" />
+ </root>
+</configuration>
\ No newline at end of file
Modified: logback/trunk/logback-examples/src/main/java/chapter6/basicEventEvaluator.xml
==============================================================================
--- logback/trunk/logback-examples/src/main/java/chapter6/basicEventEvaluator.xml (original)
+++ logback/trunk/logback-examples/src/main/java/chapter6/basicEventEvaluator.xml Mon Jan 8 16:15:25 2007
@@ -1,13 +1,13 @@
-<configuration>
+<configuration debug="true">
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator name="myEval">
- <expression>message.contains("important")</expression>
+ <expression>message.contains("billing")</expression>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
- <OnMatch>ACCEPT</OnMatch>
+ <OnMatch>DENY</OnMatch>
</filter>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
@@ -17,7 +17,7 @@
</appender>
<root>
- <level value="INFO" />
+ <level value="DEBUG" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
\ No newline at end of file
Added: logback/trunk/logback-examples/src/main/java/chapter6/thresholdFilterConfig.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-examples/src/main/java/chapter6/thresholdFilterConfig.xml Mon Jan 8 16:15:25 2007
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+ <appender name="CONSOLE"
+ class="ch.qos.logback.core.ConsoleAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>INFO</level>
+ </filter>
+ <layout class="ch.qos.logback.classic.PatternLayout">
+ <pattern>
+ %-4relative [%thread] %-5level %logger{30} - %msg%n
+ </pattern>
+ </layout>
+ </appender>
+ <root>
+ <level value="DEBUG" />
+ <appender-ref ref="CONSOLE" />
+ </root>
+</configuration>
\ No newline at end of file
Modified: logback/trunk/logback-site/src/site/xdocTemplates/manual/filters.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/manual/filters.xml (original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/manual/filters.xml Mon Jan 8 16:15:25 2007
@@ -184,17 +184,16 @@
<h3>Logback Filters</h3>
<p>
- As the moment, there is one filter that ships with
- logback. This is the most commonly used filter:
+ As the moment, there are two filters that ship with logback.
<a href="../xref/ch/qos/logback/classic/LevelFilter.html">
- <code>LevelFilter</code></a>.
- It provides event filtering based on a <code>Level</code> value. It the event's
- level is equal or higher than the configured level, the filter accepts of denies
- the event, depending on its configuration. Here is a sample configuration that
+ <code>LevelFilter</code></a> provides event filtering based on a <code>Level</code> value.
+ It the event's level is equal to the configured level, the filter accepts of denies
+ the event, depending on its configuration. It allows you to choose the
+ behaviour of logback for a precise given level. Here is a sample configuration that
uses <code>LevelFilter</code>.
</p>
-<em>Example 6.3: SampleFilter configuration (logback-examples/src/main/java/chapter6/LevelFilterConfig.xml)</em>
+<em>Example 6.3: Sample LevelFilter configuration (logback-examples/src/main/java/chapter6/LevelFilterConfig.xml)</em>
<div class="source"><pre><configuration>
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
@@ -215,6 +214,34 @@
</root>
</configuration></pre></div>
+ <p>
+ The second filter that ships with logback is
+ <a href="../xref/ch/qos/logback/classic/ThresholdFilter.html">
+ <code>ThresholdFilter</code></a>.
+ It is also based on level value, but acts as a threshold to deny any request
+ whose level is not equal or greater to the configured level. A sample
+ use of the <code>ThresholdFilter</code> is shown below.
+ </p>
+
+<em>Example 6.4: Sample ThresholdFilter configuration (logback-examples/src/main/java/chapter6/ThresholdFilterConfig.xml)</em>
+<div class="source"><pre><configuration>
+ <appender name="CONSOLE"
+ class="ch.qos.logback.core.ConsoleAppender">
+ <b><filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>INFO</level>
+ </filter></b>
+ <layout class="ch.qos.logback.classic.PatternLayout">
+ <pattern>
+ %-4relative [%thread] %-5level %logger{30} - %msg%n
+ </pattern>
+ </layout>
+ </appender>
+ <root>
+ <level value="DEBUG" />
+ <appender-ref ref="CONSOLE" />
+ </root>
+</configuration></pre></div>
+
<h3>Evaluator Filters</h3>
<p>
@@ -247,17 +274,17 @@
Let's see a sample configuration.
</p>
-<em>Example 6.4: Basic event evaluator usage (logback-examples/src/main/java/chapter6/basicEventEvaluator.xml)</em>
+<em>Example 6.5: Basic event evaluator usage (logback-examples/src/main/java/chapter6/basicEventEvaluator.xml)</em>
<div class="source"><pre><configuration>
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<b><filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator name="myEval">
- <expression>message.contains("important")</expression>
+ <expression>message.contains("billing")</expression>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
- <OnMatch>ACCEPT</OnMatch>
+ <OnMatch>DENY</OnMatch>
</filter></b>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
@@ -371,6 +398,68 @@
evaluate this logging event.
</p>
+ <p>
+ Let us see an example of <code>EvaluatorFilter</code>. The <code>FilterEvents</code>
+ class issues ten logging requests, numbered from 0 to 9.
+ </p>
+
+ <p>
+ First, let us run the <code>FilterEvents</code> class with a configuration that does
+ not contain any filters. This can be done by issuing the following command:
+ </p>
+
+<div class="source"><pre>
+java chapter6.FilterEvents src/main/java/chapter6/basicConfiguration.xml
+</pre></div>
+
+ <p>
+ All requests will be displayed, as shown below:
+ </p>
+
+<div class="source"><pre>0 [main] INFO chapter6.FilterEvents - logging statement 0
+0 [main] INFO chapter6.FilterEvents - logging statement 1
+0 [main] INFO chapter6.FilterEvents - logging statement 2
+0 [main] DEBUG chapter6.FilterEvents - logging statement 3
+0 [main] INFO chapter6.FilterEvents - logging statement 4
+0 [main] INFO chapter6.FilterEvents - logging statement 5
+0 [main] ERROR chapter6.FilterEvents - <b>billing statement 6</b>
+0 [main] INFO chapter6.FilterEvents - logging statement 7
+0 [main] INFO chapter6.FilterEvents - logging statement 8
+0 [main] INFO chapter6.FilterEvents - logging statement 9</pre></div>
+
+ <p>
+ Suppose that we want to get rid of the billing information. We
+ can use an <code>EvaluatorFilter</code> configured as follows:
+ </p>
+
+<div class="source"><pre><configuration>
+ ...
+ <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+ <evaluator name="myEval">
+ <expression>message.contains("billing")</expression>
+ </evaluator>
+ <OnMismatch>NEUTRAL</OnMismatch>
+ <OnMatch>DENY</OnMatch>
+ </filter>
+ ...
+</configuration></pre></div>
+
+ <p>
+ This filter will deny any logging event whose message
+ contains the String <em>billing</em>. If we run the <code>FilterEvents</code>
+ class again, we obtain the following output:
+ </p>
+
+<div class="source"><pre>0 [main] INFO chapter6.FilterEvents - logging statement 0
+0 [main] INFO chapter6.FilterEvents - logging statement 1
+0 [main] INFO chapter6.FilterEvents - logging statement 2
+0 [main] DEBUG chapter6.FilterEvents - logging statement 3
+0 [main] INFO chapter6.FilterEvents - logging statement 4
+0 [main] INFO chapter6.FilterEvents - logging statement 5
+0 [main] INFO chapter6.FilterEvents - logging statement 7
+0 [main] INFO chapter6.FilterEvents - logging statement 8
+0 [main] INFO chapter6.FilterEvents - logging statement 9</pre></div>
+
<a name="TurboFilter" />
<h3>TurboFilters</h3>
@@ -412,7 +501,7 @@
create a slightly more complex filter:
</p>
-<em>Example 6.5: Basic custom <code>TurboFilter</code> (<a href="../xref/chapter6/SampleTurboFilter.html">logback-examples/src/main/java/chapter6/SampleTurboFilter.java</a>)</em>
+<em>Example 6.6: Basic custom <code>TurboFilter</code> (<a href="../xref/chapter6/SampleTurboFilter.html">logback-examples/src/main/java/chapter6/SampleTurboFilter.java</a>)</em>
<div class="source"><pre>package chapter6;
import org.slf4j.Marker;
@@ -478,7 +567,7 @@
Here is a sample configuration that makes use of the newly created <code>TurboFilter</code>.
</p>
-<em>Example 6.6: Basic custom <code>TurboFilter</code> configuration (logback-examples/src/main/java/chapter6/sampleTurboFilterConfig.xml)</em>
+<em>Example 6.7: Basic custom <code>TurboFilter</code> configuration (logback-examples/src/main/java/chapter6/sampleTurboFilterConfig.xml)</em>
<div class="source"><pre><configuration>
<b><turboFilter class="chapter6.SampleTurboFilter">
<Marker>sample</Marker>
@@ -512,7 +601,7 @@
<code>MarkerFilter</code>.
</p>
-<em>Example 6.7: <code>MDCFilter</code> and <code>MarkerFilter</code>
+<em>Example 6.8: <code>MDCFilter</code> and <code>MarkerFilter</code>
configuration (logback-examples/src/main/java/chapter6/turboFilters.xml)</em>
<div class="source"><pre><configuration>
@@ -548,7 +637,7 @@
</pre></div>
<p>
- The <code>FilterEvents</code> class creates 10 logging requests,
+ As we've seen previously, the <code>FilterEvents</code> class creates 10 logging requests,
each with its number from 0 to 9. All of the requests are of level <em>INFO</em>,
just like the configured overall level, except for two requests.
The 3rd request, is a <em>DEBUG</em> level corresponding to the key <em>username</em>.
@@ -618,7 +707,7 @@
Here is a sample configuration that will ensure that any 404 error will be displayed:
</p>
-<em>Example 6.8: Access Evaluator (logback-examples/src/main/java/chapter6/accessEventEvaluator.xml)</em>
+<em>Example 6.9: Access Evaluator (logback-examples/src/main/java/chapter6/accessEventEvaluator.xml)</em>
<div class="source"><pre><configuration>
<appender name="STDOUT"
@@ -646,7 +735,7 @@
would look like:
</p>
-<em>Example 6.9: Access Evaluator (logback-examples/src/main/java/chapter6/accessEventEvaluator2.xml)</em>
+<em>Example 6.10: Access Evaluator (logback-examples/src/main/java/chapter6/accessEventEvaluator2.xml)</em>
<div class="source"><pre><configuration>
<appender name="STDOUT"
1
0

svn commit: r1171 - in logback/trunk: logback-access/src/test/java/ch/qos/logback/access/db logback-access/src/test/java/ch/qos/logback/access/jetty logback-classic/src/test/java/ch/qos/logback/classic/db logback-core/src/test/java/ch/qos/logback/core/joran/action
by noreply.seb@qos.ch 08 Jan '07
by noreply.seb@qos.ch 08 Jan '07
08 Jan '07
Author: seb
Date: Mon Jan 8 14:58:17 2007
New Revision: 1171
Modified:
logback/trunk/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderTestBase.java
logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyTestSetup.java
logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderTestBase.java
logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/action/PropertyActionTest.java
Log:
Concurrency problems should be solved
Removed call to StatusPrinter in PropertyActionTest.java
Modified: logback/trunk/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderTestBase.java
==============================================================================
--- logback/trunk/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderTestBase.java (original)
+++ logback/trunk/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderTestBase.java Mon Jan 8 14:58:17 2007
@@ -50,7 +50,8 @@
e.printStackTrace();
System.out.println(this + ".setUp() error: " + e.getMessage());
}
-
+ Thread.yield();
+
createTables();
}
Modified: logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyTestSetup.java
==============================================================================
--- logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyTestSetup.java (original)
+++ logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyTestSetup.java Mon Jan 8 14:58:17 2007
@@ -66,6 +66,8 @@
context.addHandler(handler);
server.start();
+
+ Thread.yield();
}
public void tearDown() throws Exception {
Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderTestBase.java
==============================================================================
--- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderTestBase.java (original)
+++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderTestBase.java Mon Jan 8 14:58:17 2007
@@ -51,7 +51,8 @@
e.printStackTrace();
System.out.println(this + ".setUp() error: " + e.getMessage());
}
-
+ Thread.yield();
+
createTables();
}
Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/action/PropertyActionTest.java
==============================================================================
--- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/action/PropertyActionTest.java (original)
+++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/joran/action/PropertyActionTest.java Mon Jan 8 14:58:17 2007
@@ -8,7 +8,6 @@
import ch.qos.logback.core.joran.spi.InterpretationContext;
import ch.qos.logback.core.status.ErrorStatus;
import ch.qos.logback.core.util.Constants;
-import ch.qos.logback.core.util.StatusPrinter;
public class PropertyActionTest extends TestCase {
@@ -79,7 +78,6 @@
public void testLoadNotPossible() {
atts.setValue("file", "toto");
spAction.begin(ec, null, atts);
- StatusPrinter.print(context);
assertEquals(2, context.getStatusManager().getCount());
assertTrue(checkFileErrors());
}
1
0

svn commit: r1170 - logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter
by noreply.seb@qos.ch 08 Jan '07
by noreply.seb@qos.ch 08 Jan '07
08 Jan '07
Author: seb
Date: Mon Jan 8 14:41:32 2007
New Revision: 1170
Modified:
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java
Log:
Modified return value
Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java (original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java Mon Jan 8 14:41:32 2007
@@ -8,9 +8,11 @@
/**
* A class that filters events depending on their level.
*
- * All events with a level equal or above the specified
- * level will be accepted, while all events with a level
- * under the specified level will be denied.
+ * All events with a level under or above the specified
+ * level will be denied, while all events with a level
+ * equal or above the specified level will trigger a
+ * FilterReply.NEUTRAL result, to allow the rest of the
+ * filter chain process the event.
*
* @author Sébastien Pennec
*/
@@ -27,7 +29,7 @@
LoggingEvent event = (LoggingEvent)eventObject;
if (event.getLevel().isGreaterOrEqual(level)) {
- return FilterReply.ACCEPT;
+ return FilterReply.NEUTRAL;
} else {
return FilterReply.DENY;
}
1
0

svn commit: r1169 - in logback/trunk/logback-site/src/site/xdocTemplates: . manual
by noreply.seb@qos.ch 08 Jan '07
by noreply.seb@qos.ch 08 Jan '07
08 Jan '07
Author: seb
Date: Mon Jan 8 11:54:27 2007
New Revision: 1169
Modified:
logback/trunk/logback-site/src/site/xdocTemplates/access.xml
logback/trunk/logback-site/src/site/xdocTemplates/demo.xml
logback/trunk/logback-site/src/site/xdocTemplates/manual/joran.xml
logback/trunk/logback-site/src/site/xdocTemplates/shortIntro.xml
Log:
Sentences fixed
Modified: logback/trunk/logback-site/src/site/xdocTemplates/access.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/access.xml (original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/access.xml Mon Jan 8 11:54:27 2007
@@ -319,7 +319,7 @@
<div class="source"><pre>jconsole &</pre></div>
<p>
- The user might prefer to access her components thanks to a web-based solution using MX4J.
+ The user might prefer to access her components via a web-based solution using MX4J.
In that case, here are the required steps:
</p>
Modified: logback/trunk/logback-site/src/site/xdocTemplates/demo.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/demo.xml (original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/demo.xml Mon Jan 8 11:54:27 2007
@@ -75,7 +75,7 @@
</p>
<p>
-Now, the <em>View logs</em> page looks prettier. Thanks to the <code>CyclicBufferAppender</code>,
+Now, the <em>View logs</em> page looks prettier. By virtue of the <code>CyclicBufferAppender</code>,
this page can fetch the last events and present them through a servlet.
</p>
Modified: logback/trunk/logback-site/src/site/xdocTemplates/manual/joran.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/manual/joran.xml (original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/manual/joran.xml Mon Jan 8 11:54:27 2007
@@ -69,14 +69,14 @@
<h2>Configuration in logback</h2>
<p>
-Logback can be configured both programmatically and thanks to an xml configuration
+Logback can be configured both programmatically and with an xml configuration
file. Here are the steps that logback follows to try to configure itself:
</p>
<ul>
<p>Logback tries to find a file called <em>logback.xml</em> within the classpath.</p>
<p>If no such file is found, it checks for another file called <em>logback-test.xml</em>.</p>
- <p>In case none of these files are found, logback configures itself automatically thanks to the
+ <p>In case none of these files are found, logback configures itself automatically using the
<a href="../xref/ch/qos/logback/classic/BasicConfigurator.html"><code>BasicConfigurator</code>
</a> class.</p>
</ul>
@@ -955,7 +955,7 @@
<p>As we've seen, logback relies on Joran, a
mature, flexible and powerful configuration framework. Many of the
-capabilities offered by logback modules are possible thanks to Joran.
+capabilities offered by logback modules are possible with the help of Joran.
</p>
<p>Joran is actually a generic configuration system which can be used
Modified: logback/trunk/logback-site/src/site/xdocTemplates/shortIntro.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/shortIntro.xml (original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/shortIntro.xml Mon Jan 8 11:54:27 2007
@@ -171,10 +171,10 @@
<p>
Launching the <code>HelloWorld1</code>
- application will produce a very simple output. This it thanks
- to logback's default configuration policy. When nothing is found to
- configure logback explicitly, logback will configure itself with
- a simple output to the console, as shown below.
+ application will output a single line on the console. By virtue of
+ to logback's default configuration policy, when no default file
+ is found to configure logback explicitely, logback will add a
+ <code>ConsoleAppender</code> to the root logger.
</p>
<div class="source"><pre>20:49:07.962 [main] DEBUG chapter1.HelloWorld1 - Hello world.</pre></div>
1
0

svn commit: r1168 - logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter
by noreply.seb@qos.ch 08 Jan '07
by noreply.seb@qos.ch 08 Jan '07
08 Jan '07
Author: seb
Date: Mon Jan 8 11:06:45 2007
New Revision: 1168
Added:
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java
logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java
Log:
Added ThresholdFilter class and modified LevelFilter class. The latter now acts as a configurable
filter to allow or deny a specific given level. ThresholdFilter allows any logging events whose level is
higher or equals to its configured level.
Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java
==============================================================================
--- (empty file)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java Mon Jan 8 11:06:45 2007
@@ -0,0 +1,45 @@
+package ch.qos.logback.classic.filter;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.core.filter.AbstractMatcherFilter;
+import ch.qos.logback.core.spi.FilterReply;
+
+/**
+ * A class that filters events depending on their level.
+ *
+ * One can specify a level and the behaviour of the filter when
+ * said level is encountered in a logging event.
+ *
+ * @author Ceki Gülcü
+ * @author Sébastien Pennec
+ */
+public class LevelFilter extends AbstractMatcherFilter {
+
+ Level level;
+
+ @Override
+ public FilterReply decide(Object eventObject) {
+ if (!isStarted()) {
+ return FilterReply.NEUTRAL;
+ }
+
+ LoggingEvent event = (LoggingEvent)eventObject;
+
+ if (event.getLevel().equals(level)) {
+ return onMatch;
+ } else {
+ return onMismatch;
+ }
+ }
+
+ public void setLevel(String level) {
+ this.level = Level.toLevel(level);
+ }
+
+ public void start() {
+ if (this.level != null) {
+ super.start();
+ }
+ }
+}
Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java
==============================================================================
--- (empty file)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java Mon Jan 8 11:06:45 2007
@@ -0,0 +1,45 @@
+package ch.qos.logback.classic.filter;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.LoggingEvent;
+import ch.qos.logback.core.filter.Filter;
+import ch.qos.logback.core.spi.FilterReply;
+
+/**
+ * A class that filters events depending on their level.
+ *
+ * All events with a level equal or above the specified
+ * level will be accepted, while all events with a level
+ * under the specified level will be denied.
+ *
+ * @author Sébastien Pennec
+ */
+public class ThresholdFilter extends Filter {
+
+ Level level;
+
+ @Override
+ public FilterReply decide(Object eventObject) {
+ if (!isStarted()) {
+ return FilterReply.NEUTRAL;
+ }
+
+ LoggingEvent event = (LoggingEvent)eventObject;
+
+ if (event.getLevel().isGreaterOrEqual(level)) {
+ return FilterReply.ACCEPT;
+ } else {
+ return FilterReply.DENY;
+ }
+ }
+
+ public void setLevel(String level) {
+ this.level = Level.toLevel(level);
+ }
+
+ public void start() {
+ if (this.level != null) {
+ super.start();
+ }
+ }
+}
1
0

06 Jan '07
Author: ceki
Date: Sat Jan 6 18:22:37 2007
New Revision: 1167
Modified:
logback/trunk/logback-site/src/site/resources/cla.txt
Log:
ASF has authorized us to adapt and make use of their ICL agreement.
Modified: logback/trunk/logback-site/src/site/resources/cla.txt
==============================================================================
--- logback/trunk/logback-site/src/site/resources/cla.txt (original)
+++ logback/trunk/logback-site/src/site/resources/cla.txt Sat Jan 6 18:22:37 2007
@@ -1,6 +1,10 @@
QOS.ch
Individual Contributor License Agreement ("Agreement")
+This agreement is an adaptation of the Apache Software Foundation ICL
+agreement where references to ASF have been replaced by QOS.ch. We
+thank the ASF for allowing QOS.ch to make use of their ICL agreement.
+
Thank you for your interest in QOS.ch. In order to clarify the
intellectual property license granted with Contributions from any
person or entity, QOS.ch must have a Contributor License Agreement
1
0