[prev in list] [next in list] [prev in thread] [next in thread]
List: log4j-dev
Subject: svn commit: r533406 [2/2] - in /logging/sandbox/experimental/pattern-layout:
From: carnold () apache ! org
Date: 2007-04-28 18:43:40
Message-ID: 20070428184342.AA9271A983E () eris ! apache ! org
[Download RAW message or body]
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/DateLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/DatePatternConverter.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/DateLayout.java?view=diff&rev=533406&p1=logging/sandb \
ox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/DatePatternConve \
rter.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/DateLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/DatePatternConverter.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/DateLayout.java \
Sat Apr 28 11:43:37 2007 @@ -14,149 +14,49 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.apache.logging.pattern;
-package org.apache.log4j.pattern;
-
-import org.apache.log4j.helpers.LogLog;
-import org.apache.log4j.spi.LoggingEvent;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.TimeZone;
-
+import org.apache.logging.core.LogRecord;
+import org.apache.logging.core.*;
+import java.text.DateFormat;
+import java.util.Locale;
+import java.io.IOException;
/**
- * Convert and format the event's date in a StringBuffer.
+ * Abstract base layout of any layout that extracts
+ * a Date and formats using a java.text.DateFormat.
*
- * @author Ceki Gülcü
- * @since 1.3
*/
-public final class DatePatternConverter extends LoggingEventPatternConverter {
- /**
- * ABSOLUTE string literal.
- */
- private static final String ABSOLUTE_FORMAT = "ABSOLUTE";
- /**
- * SimpleTimePattern for ABSOLUTE.
- */
- private static final String ABSOLUTE_TIME_PATTERN = "HH:mm:ss,SSS";
+public abstract class DateLayout<T extends Appendable>
+ implements Layout<T> {
+ private final DateFormat format;
/**
- * DATE string literal.
+ * Create new instance.
*/
- private static final String DATE_AND_TIME_FORMAT = "DATE";
- /**
- * SimpleTimePattern for DATE.
- */
- private static final String DATE_AND_TIME_PATTERN = "dd MMM yyyy HH:mm:ss,SSS";
-
- /**
- * ISO8601 string literal.
- */
- private static final String ISO8601_FORMAT = "ISO8601";
- /**
- * SimpleTimePattern for ISO8601.
- */
- private static final String ISO8601_PATTERN = "yyyy-MM-dd HH:mm:ss,SSS";
- /**
- * Date format.
- */
- private final CachedDateFormat df;
-
- /**
- * Private constructor.
- * @param options options, may be null.
- */
- private DatePatternConverter(final String[] options) {
- super("Date", "date");
-
- String patternOption;
-
- if ((options == null) || (options.length == 0)) {
- // the branch could be optimized, but here we are making explicit
- // that null values for patternOption are allowed.
- patternOption = null;
- } else {
- patternOption = options[0];
+ public DateLayout(DateFormat fmt) {
+ if (fmt == null) {
+ throw new NullPointerException("fmt");
+ }
+ format = fmt;
}
- String pattern;
- if (
- (patternOption == null)
- || patternOption.equalsIgnoreCase(ISO8601_FORMAT)) {
- pattern = ISO8601_PATTERN;
- } else if (patternOption.equalsIgnoreCase(ABSOLUTE_FORMAT)) {
- pattern = ABSOLUTE_TIME_PATTERN;
- } else if (patternOption.equalsIgnoreCase(DATE_AND_TIME_FORMAT)) {
- pattern = DATE_AND_TIME_PATTERN;
- } else {
- pattern = patternOption;
- }
-
- int maximumCacheValidity = 1000;
- SimpleDateFormat simpleFormat = null;
-
- try {
- simpleFormat = new SimpleDateFormat(pattern);
- maximumCacheValidity = CachedDateFormat.getMaximumCacheValidity(pattern);
- } catch (IllegalArgumentException e) {
- LogLog.warn(
- "Could not instantiate SimpleDateFormat with pattern "
- + patternOption, e);
-
- // default to the ISO8601 format
- simpleFormat = new SimpleDateFormat(ISO8601_PATTERN);
- }
-
- // if the option list contains a TZ option, then set it.
- if ((options != null) && (options.length > 1)) {
- TimeZone tz = TimeZone.getTimeZone((String) options[1]);
- simpleFormat.setTimeZone(tz);
- }
-
- df = new CachedDateFormat(simpleFormat, maximumCacheValidity);
- }
-
- /**
- * Obtains an instance of pattern converter.
- * @param options options, may be null.
- * @return instance of pattern converter.
- */
- public static DatePatternConverter newInstance(
- final String[] options) {
- return new DatePatternConverter(options);
- }
-
- /**
- * {@inheritDoc}
- */
- public void format(final LoggingEvent event, final StringBuffer output) {
- synchronized(this) {
- df.format(event.timeStamp, output);
+ /**
+ * {@inheritDoc}
+ */
+ public void render(Object extract, Locale locale, T destination)
+ throws IOException {
+ destination.append(format.format(extract));
}
- }
- /**
- * {@inheritDoc}
- */
- public void format(final Object obj, final StringBuffer output) {
- if (obj instanceof Date) {
- format((Date) obj, output);
+ /**
+ * {@inheritDoc}
+ */
+ public void format(LogRecord record, Locale locale, T destination)
+ throws IOException {
+ render(extract(record), locale, destination);
}
- super.format(obj, output);
- }
-
- /**
- * Append formatted date to string buffer.
- * @param date date
- * @param toAppendTo buffer to which formatted date is appended.
- */
- public void format(final Date date, final StringBuffer toAppendTo) {
- synchronized(this) {
- df.format(date.getTime(), toAppendTo);
- }
- }
}
Added: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/DecoratorLayout.java
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/DecoratorLayout.java?view=auto&rev=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/DecoratorLayout.java \
(added)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/DecoratorLayout.java \
Sat Apr 28 11:43:37 2007 @@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.pattern;
+
+import org.apache.logging.core.Layout;
+import org.apache.logging.core.LogRecord;
+import org.apache.logging.core.LoggingException;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Locale;
+
+/**
+ * Abstract base classes for Layouts that modify the
+ * rendered content from another layout.
+ *
+ */
+public abstract class DecoratorLayout
+ implements Layout<StringBuilder>, Serializable {
+
+ private final Layout<StringBuilder> nested;
+
+ protected DecoratorLayout(final Layout<StringBuilder> nested) {
+ if (nested == null) {
+ throw new NullPointerException("nested");
+ }
+ this.nested = nested;
+ }
+
+ /** {*inheritDoc} */
+ public Object extract(final LogRecord record) {
+ return nested.extract(record);
+ }
+
+
+ /**
+ * Modifies content rendered by nested layout.
+ * @param extract extract.
+ * @param locale locale.
+ * @param destination destination.
+ * @param initialPos position of destination before
+ * nested layout was rendered.
+ */
+ protected abstract void decorate(final Object extract,
+ final Locale locale,
+ final StringBuilder destination,
+ final int initialPos);
+ /**
+ * {@inheritDoc}
+ */
+ public void render(final Object extract,
+ final Locale locale,
+ final StringBuilder destination)
+ throws IOException, LoggingException {
+ int initialPos = destination.length();
+ nested.render(extract, locale, destination);
+ decorate(extract, locale, destination, initialPos);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void format(LogRecord record, Locale locale,
+ StringBuilder destination)
+ throws IOException, LoggingException {
+ render(extract(record), locale, destination);
+ }
+
+}
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/FieldLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/FormattingInfo.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/FieldLayout.java?view=diff&rev=533406&p1=logging/sand \
box/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/FormattingInfo. \
java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/FieldLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/FormattingInfo.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/FieldLayout.java \
Sat Apr 28 11:43:37 2007 @@ -14,122 +14,42 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.apache.logging.pattern;
-package org.apache.log4j.pattern;
-
+import org.apache.logging.core.Layout;
+import org.apache.logging.core.LogRecord;
+import org.apache.logging.core.LoggingException;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Locale;
/**
- * Modifies the output of a pattern converter for a specified minimum
- * and maximum width and alignment.
- *
+ * Class handles justification and truncation of fields.
*
- * @author <a href=mailto:jim_cakalic@na.biomerieux.com>Jim Cakalic</a>
- * @author Ceki Gülcü
- * @author Curt Arnold
*
- * @since 1.3
*/
-public final class FormattingInfo {
- /**
- * Array of spaces.
- */
- private static final char[] SPACES =
- new char[] { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' };
-
- /**
- * Default instance.
- */
- private static final FormattingInfo DEFAULT =
- new FormattingInfo(false, 0, Integer.MAX_VALUE);
-
- /**
- * Minimum length.
- */
- private final int minLength;
-
- /**
- * Maximum length.
- */
- private final int maxLength;
-
- /**
- * Alignment.
- */
- private final boolean leftAlign;
-
- /**
- * Creates new instance.
- * @param leftAlign left align if true.
- * @param minLength minimum length.
- * @param maxLength maximum length.
- */
- public FormattingInfo(
- final boolean leftAlign, final int minLength, final int maxLength) {
- this.leftAlign = leftAlign;
- this.minLength = minLength;
- this.maxLength = maxLength;
- }
-
- /**
- * Gets default instance.
- * @return default instance.
- */
- public static FormattingInfo getDefault() {
- return DEFAULT;
- }
-
- /**
- * Determine if left aligned.
- * @return true if left aligned.
- */
- public boolean isLeftAligned() {
- return leftAlign;
- }
-
- /**
- * Get minimum length.
- * @return minimum length.
- */
- public int getMinLength() {
- return minLength;
- }
-
- /**
- * Get maximum length.
- * @return maximum length.
- */
- public int getMaxLength() {
- return maxLength;
- }
-
- /**
- * Adjust the content of the buffer based on the specified lengths and alignment.
- *
- * @param fieldStart start of field in buffer.
- * @param buffer buffer to be modified.
- */
- public void format(final int fieldStart, final StringBuffer buffer) {
- final int rawLength = buffer.length() - fieldStart;
-
- if (rawLength > maxLength) {
- buffer.delete(fieldStart, buffer.length() - maxLength);
- } else if (rawLength < minLength) {
- if (leftAlign) {
- final int fieldEnd = buffer.length();
- buffer.setLength(fieldStart + minLength);
-
- for (int i = fieldEnd; i < buffer.length(); i++) {
- buffer.setCharAt(i, ' ');
- }
- } else {
- int padLength = minLength - rawLength;
-
- for (; padLength > 8; padLength -= 8) {
- buffer.insert(fieldStart, SPACES);
- }
+public final class FieldLayout extends DecoratorLayout {
+
+ private final int width;
+ private final boolean leftJustify;
+
+ public FieldLayout(final Layout<StringBuilder> nested,
+ final int width,
+ final boolean leftJustify) {
+ super(nested);
+ this.width = width;
+ this.leftJustify = leftJustify;
- buffer.insert(fieldStart, SPACES, 0, padLength);
- }
}
- }
+
+ /** {@inheritDoc} */
+ protected void decorate(final Object extract,
+ final Locale locale,
+ final StringBuilder destination,
+ final int initialPos) {
+
+ }
+
+
}
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LevelLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LevelPatternConverter.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/LevelLayout.java?view=diff&rev=533406&p1=logging/sand \
box/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LevelPatternCon \
verter.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LevelLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LevelPatternConverter.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LevelLayout.java \
Sat Apr 28 11:43:37 2007 @@ -14,81 +14,29 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.apache.logging.pattern;
-package org.apache.log4j.pattern;
-
-import org.apache.log4j.Level;
-import org.apache.log4j.spi.LoggingEvent;
-
+import org.apache.logging.core.LogRecord;
/**
- * Return the event's level in a StringBuffer.
+ * This layout appends the level of the log request.
*
- * @author Ceki Gülcü
- * @since 1.3
+ * @PatternSpecifier("p", "level")
+ * @Immutable
*/
-public final class LevelPatternConverter extends LoggingEventPatternConverter {
- /**
- * Singleton.
- */
- private static final LevelPatternConverter INSTANCE =
- new LevelPatternConverter();
-
- /**
- * Private constructor.
- */
- private LevelPatternConverter() {
- super("Level", "level");
- }
-
- /**
- * Obtains an instance of pattern converter.
- * @param options options, may be null.
- * @return instance of pattern converter.
- */
- public static LevelPatternConverter newInstance(
- final String[] options) {
- return INSTANCE;
- }
-
- /**
- * {@inheritDoc}
- */
- public void format(final LoggingEvent event, final StringBuffer output) {
- output.append(event.getLevel().toString());
- }
-
- /**
- * {@inheritDoc}
- */
- public String getStyleClass(Object e) {
- if (e instanceof LoggingEvent) {
- int lint = ((LoggingEvent) e).getLevel().toInt();
-
- switch (lint) {
- case Level.TRACE_INT:
- return "level trace";
+public final class LevelLayout<T extends Appendable>
+ extends LocalizableLayout<T> {
- case Level.DEBUG_INT:
- return "level debug";
-
- case Level.INFO_INT:
- return "level info";
-
- case Level.WARN_INT:
- return "level warn";
-
- case Level.ERROR_INT:
- return "level error";
-
- case Level.FATAL_INT:
- return "level fatal";
-
- default:
- return "level " + ((LoggingEvent) e).getLevel().toString();
- }
+ /**
+ * Create new instance.
+ */
+ public LevelLayout() {
}
- return "level";
- }
+ /**
+ * {@inheritDoc}
+ */
+ public Object extract(final LogRecord record) {
+ return record.getLevel();
+ }
}
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LineSeparatorLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LineSeparatorPatternConverter.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/LineSeparatorLayout.java?view=diff&rev=533406&p1=logg \
ing/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LineSep \
aratorPatternConverter.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LineSeparatorLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LineSeparatorPatternConverter.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LineSeparatorLayout.java \
Sat Apr 28 11:43:37 2007 @@ -15,60 +15,60 @@
* limitations under the License.
*/
-package org.apache.log4j.pattern;
+package org.apache.logging.pattern;
-import org.apache.log4j.Layout;
-import org.apache.log4j.spi.LoggingEvent;
+import org.apache.logging.core.Layout;
+import org.apache.logging.core.LogRecord;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Locale;
/**
- * Formats a line separator.
+ * Appends a line separator to the destination.
*
- * @author Ceki Gülcü
- * @since 1.3
+ * @PatternSpecifier("n")
+ * @Immutable
*/
-public final class LineSeparatorPatternConverter
- extends LoggingEventPatternConverter {
- /**
- * Singleton.
- */
- private static final LineSeparatorPatternConverter INSTANCE =
- new LineSeparatorPatternConverter();
-
+public final class LineSeparatorLayout<T extends Appendable>
+ implements Layout<T>, Serializable {
/**
* Line separator.
*/
- private final String lineSep;
+ private final transient String lineSep;
/**
- * Private constructor.
+ * Create a new instance.
*/
- private LineSeparatorPatternConverter() {
- super("Line Sep", "lineSep");
- lineSep = Layout.LINE_SEP;
+ public LineSeparatorLayout() {
+ String sep = "\n";
+ try {
+ sep = System.getProperty("line.separator");
+ } catch(Exception ex) {
+ }
+ lineSep = sep;
}
- /**
- * Obtains an instance of pattern converter.
- * @param options options, may be null.
- * @return instance of pattern converter.
- */
- public static LineSeparatorPatternConverter newInstance(
- final String[] options) {
- return INSTANCE;
+ /** {@inheritDoc} */
+ public Object extract(final LogRecord record) {
+ return lineSep;
}
- /**
- * {@inheritDoc}
- */
- public void format(LoggingEvent event, final StringBuffer toAppendTo) {
- toAppendTo.append(lineSep);
- }
+ /**
+ * {@inheritDoc}
+ */
+ public void render(Object extract, Locale locale, T destination)
+ throws IOException {
+ destination.append(lineSep);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void format(LogRecord record, Locale locale, T destination)
+ throws IOException {
+ destination.append(lineSep);
+ }
- /**
- * {@inheritDoc}
- */
- public void format(final Object obj, final StringBuffer toAppendTo) {
- toAppendTo.append(lineSep);
- }
}
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LiteralLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LiteralPatternConverter.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/LiteralLayout.java?view=diff&rev=533406&p1=logging/sa \
ndbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LiteralPatter \
nConverter.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LiteralLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LiteralPatternConverter.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LiteralLayout.java \
Sat Apr 28 11:43:37 2007 @@ -15,19 +15,20 @@
* limitations under the License.
*/
-package org.apache.log4j.pattern;
+package org.apache.logging.pattern;
-import org.apache.log4j.spi.LoggingEvent;
+import org.apache.logging.core.LogRecord;
+
+import java.io.Serializable;
/**
- * Formats a string literal.
- *
- * @author Curt Arnold
- * @since 1.3
+ * Layouts a string literal.
*
+ * @Immutable
*/
-public final class LiteralPatternConverter extends LoggingEventPatternConverter {
+public final class LiteralLayout<T extends Appendable>
+ extends StringLayout<T> implements Serializable {
/**
* String literal.
*/
@@ -37,22 +38,12 @@
* Create a new instance.
* @param literal string literal.
*/
- public LiteralPatternConverter(final String literal) {
- super("Literal", "literal");
+ public LiteralLayout(final String literal) {
this.literal = literal;
}
- /**
- * {@inheritDoc}
- */
- public void format(final LoggingEvent event, final StringBuffer toAppendTo) {
- toAppendTo.append(literal);
- }
-
- /**
- * {@inheritDoc}
- */
- public void format(final Object obj, final StringBuffer toAppendTo) {
- toAppendTo.append(literal);
+ /** {@inheritDoc} */
+ public Object extract(final LogRecord record) {
+ return literal;
}
}
Added: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LocalizableLayout.java
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LocalizableLayout.java?view=auto&rev=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LocalizableLayout.java \
(added)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LocalizableLayout.java \
Sat Apr 28 11:43:37 2007 @@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.pattern;
+
+import org.apache.logging.core.Layout;
+import org.apache.logging.core.Localizable;
+import org.apache.logging.core.LogRecord;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Locale;
+
+public abstract class LocalizableLayout<T extends Appendable>
+ implements Layout<T>, Serializable {
+
+ protected LocalizableLayout() {
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void render(Object extract, Locale locale, T destination)
+ throws IOException {
+ if (extract instanceof Localizable) {
+ destination.append(((Localizable) extract).getLocalizedName(locale));
+ }
+ destination.append(String.valueOf(extract));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void format(LogRecord record, Locale locale, T destination)
+ throws IOException {
+ render(extract(record), locale, destination);
+ }
+
+}
Added: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LogRecordDateLayout.java
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LogRecordDateLayout.java?view=auto&rev=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LogRecordDateLayout.java \
(added)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LogRecordDateLayout.java \
Sat Apr 28 11:43:37 2007 @@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.pattern;
+
+import org.apache.logging.core.LogRecord;
+import org.apache.logging.core.*;
+import java.text.DateFormat;
+import java.util.Locale;
+import java.io.IOException;
+import java.util.Date;
+
+/**
+ *
+ * @PatternSpecifier("d", "date")
+ */
+public final class LogRecordDateLayout<T extends Appendable>
+ implements Layout<T> {
+
+ private final DateFormat format;
+
+ /**
+ * Create new instance.
+ */
+ public LogRecordDateLayout(final DateFormat fmt) {
+ if (fmt == null) {
+ throw new NullPointerException("fmt");
+ }
+ format = fmt;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object extract(final LogRecord record) {
+ return record.getMillis();
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public void render(Object extract, Locale locale, T destination)
+ throws IOException {
+ destination.append(format.format(
+ new Date(((Long) extract).longValue())));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void format(LogRecord record, Locale locale, T destination)
+ throws IOException {
+ render(extract(record), locale, destination);
+ }
+
+}
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LoggerNameLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LoggerPatternConverter.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/LoggerNameLayout.java?view=diff&rev=533406&p1=logging \
/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LoggerPatt \
ernConverter.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LoggerNameLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/LoggerPatternConverter.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/LoggerNameLayout.java \
Sat Apr 28 11:43:37 2007 @@ -14,54 +14,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.apache.logging.pattern;
-package org.apache.log4j.pattern;
-
-import org.apache.log4j.spi.LoggingEvent;
-
+import org.apache.logging.core.LogRecord;
/**
- * Formats a logger name.
- *
- * @author Ceki Gülcü
+ * This layout appends the logger associated with the log request.
*
- * @since 1.3
+ * @PatternSpecifier("c", "logger");
*/
-public final class LoggerPatternConverter extends NamePatternConverter {
- /**
- * Singleton.
- */
- private static final LoggerPatternConverter INSTANCE =
- new LoggerPatternConverter(null);
+public final class LoggerNameLayout<T extends Appendable>
+ extends StringLayout<T> {
- /**
- * Private constructor.
- * @param options options, may be null.
- */
- private LoggerPatternConverter(final String[] options) {
- super("Logger", "logger", options);
- }
-
- /**
- * Obtains an instance of pattern converter.
- * @param options options, may be null.
- * @return instance of pattern converter.
- */
- public static LoggerPatternConverter newInstance(
- final String[] options) {
- if ((options == null) || (options.length == 0)) {
- return INSTANCE;
+ /**
+ * Create new instance.
+ */
+ public LoggerNameLayout() {
}
- return new LoggerPatternConverter(options);
- }
-
- /**
- * {@inheritDoc}
- */
- public void format(final LoggingEvent event, final StringBuffer toAppendTo) {
- final int initialLength = toAppendTo.length();
- toAppendTo.append(event.getLoggerName());
- abbreviate(initialLength, toAppendTo);
- }
+ /**
+ * {@inheritDoc}
+ */
+ public Object extract(final LogRecord record) {
+ return record.getLoggerName();
+ }
}
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/MessageLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/MessagePatternConverter.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/MessageLayout.java?view=diff&rev=533406&p1=logging/sa \
ndbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/MessagePatter \
nConverter.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/MessageLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/MessagePatternConverter.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/MessageLayout.java \
Sat Apr 28 11:43:37 2007 @@ -14,46 +14,29 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.apache.logging.pattern;
-package org.apache.log4j.pattern;
-
-import org.apache.log4j.spi.LoggingEvent;
-
+import org.apache.logging.core.LogRecord;
/**
- * Return the event's rendered message in a StringBuffer.
+ * This layout appends the message of the log request.
*
- * @author Ceki Gülcü
- * @since 1.3
+ * @PatternSpecifier("m", "message")
+ * @Immutable
*/
-public final class MessagePatternConverter extends LoggingEventPatternConverter {
- /**
- * Singleton.
- */
- private static final MessagePatternConverter INSTANCE =
- new MessagePatternConverter();
-
- /**
- * Private constructor.
- */
- private MessagePatternConverter() {
- super("Message", "message");
- }
-
- /**
- * Obtains an instance of pattern converter.
- * @param options options, may be null.
- * @return instance of pattern converter.
- */
- public static MessagePatternConverter newInstance(
- final String[] options) {
- return INSTANCE;
- }
+public final class MessageLayout<T extends Appendable>
+ extends LocalizableLayout<T> {
- /**
- * {@inheritDoc}
- */
- public void format(final LoggingEvent event, final StringBuffer toAppendTo) {
- toAppendTo.append(event.getRenderedMessage());
- }
+ /**
+ * Create new instance.
+ */
+ public MessageLayout() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object extract(final LogRecord record) {
+ return record.getMessage();
+ }
}
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/PatternLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/EnhancedPatternLayout.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/PatternLayout.java?view=diff&rev=533406&p1=logging/sa \
ndbox/experimental/pattern-layout/src/main/java/org/apache/log4j/EnhancedPatternLayout \
.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/PatternLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/EnhancedPatternLayout.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/PatternLayout.java \
Sat Apr 28 11:43:37 2007 @@ -21,6 +21,7 @@
import org.apache.log4j.helpers.PatternConverter;
import org.apache.log4j.pattern.BridgePatternConverter;
import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.*;
// Contributors: Nelson Minar <nelson@monkey.org>
@@ -404,7 +405,7 @@
@since 0.8.2 */
-public class EnhancedPatternLayout extends Layout {
+public class PatternLayout extends Layout {
/** Default pattern string for log output. Currently set to the
string <b>"%m%n"</b> which just prints the application supplied
message. */
@@ -454,7 +455,7 @@
The default pattern just produces the application supplied message.
*/
- public EnhancedPatternLayout() {
+ public PatternLayout() {
this(DEFAULT_CONVERSION_PATTERN);
}
@@ -462,7 +463,7 @@
* Constructs a EnhancedPatternLayout using the supplied conversion pattern.
* @param pattern conversion pattern.
*/
- public EnhancedPatternLayout(final String pattern) {
+ public PatternLayout(final String pattern) {
this.conversionPattern = pattern;
head = createPatternParser(
(pattern == null) ? DEFAULT_CONVERSION_PATTERN : pattern).parse();
Added: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/PatternSpecifier.java
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/PatternSpecifier.java?view=auto&rev=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/PatternSpecifier.java \
(added)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/PatternSpecifier.java \
Sat Apr 28 11:43:37 2007 @@ -0,0 +1,21 @@
+package org.apache.logging.pattern;
+
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+public @interface PatternSpecifier {
+ String[] getSpecifiers();
+}
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/PropertiesContextLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/PropertiesPatternConverter.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/PropertiesContextLayout.java?view=diff&rev=533406&p1= \
logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/Pro \
pertiesPatternConverter.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/PropertiesContextLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/PropertiesPatternConverter.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/PropertiesContextLayout.java \
Sat Apr 28 11:43:37 2007 @@ -14,155 +14,79 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.apache.logging.pattern;
-package org.apache.log4j.pattern;
-
-import org.apache.log4j.spi.LoggingEvent;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.lang.reflect.*;
-import java.util.Iterator;
-import java.util.Set;
-import org.apache.log4j.helpers.*;
+import org.apache.logging.core.Layout;
+import org.apache.logging.core.LogRecord;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Locale;
+import org.apache.logging.core.*;
+import java.util.*;
/**
- * Able to handle the contents of the LoggingEvent's Property bundle and either
- * output the entire contents of the properties in a similar format to the
- * java.util.Hashtable.toString(), or to output the value of a specific key
- * within the property bundle
- * when this pattern converter has the option set.
+ * Abstract class for any layout that extracts a
+ * string from the log record and writes to an Appendable.
*
- * @author Paul Smith
- * @author Ceki Gülcü
- *@since 1.3
+ * @PatternSpecifier("x");
*/
-public final class PropertiesPatternConverter
- extends LoggingEventPatternConverter {
- /**
- * Name of property to output.
- */
- private final String option;
- private final Method getKeySetMethod;
-
- /**
- * Private constructor.
- * @param options options, may be null.
- */
- private PropertiesPatternConverter(
- final String[] options) {
- super(
- ((options != null) && (options.length > 0))
- ? ("Property{" + options[0] + "}") : "Properties", "property");
-
- //
- // log4j 1.2.15 and later will have method to get names
- // of all keys in MDC
- //
- Method getMethod = null;
-
- if ((options != null) && (options.length > 0)) {
- option = options[0];
- } else {
- option = null;
- try {
- getMethod = LoggingEvent.class.getMethod(
- "getPropertyKeySet", null);
- } catch(Exception ex) {
- getMethod = null;
- }
+public final class PropertiesContextLayout<T extends Appendable>
+ implements Layout<T>, Serializable {
+
+ private final String key;
+
+ /**
+ * Output all properties from context.
+ */
+ public PropertiesContextLayout() {
+ key = null;
+ }
+
+ /**
+ * Output one property.
+ */
+ public PropertiesContextLayout(final String key) {
+ this.key = key;
}
- getKeySetMethod = getMethod;
- }
- /**
- * Obtains an instance of PropertiesPatternConverter.
- * @param options options, may be null or first element contains name of property \
to format.
- * @return instance of PropertiesPatternConverter.
- */
- public static PropertiesPatternConverter newInstance(
- final String[] options) {
- return new PropertiesPatternConverter(options);
- }
-
- /**
- * {@inheritDoc}
- */
- public void format(final LoggingEvent event, final StringBuffer toAppendTo) {
- // if there is no additional options, we output every single
- // Key/Value pair for the MDC in a similar format to Hashtable.toString()
- if (option == null) {
- toAppendTo.append("{");
-
- //
- // MDC keys are not visible prior to log4j 1.2.15
- //
- Set keySet = null;
- if (getKeySetMethod != null) {
- try {
- keySet = (Set) getKeySetMethod.invoke(event, null);
- } catch(InvocationTargetException ex) {
- LogLog.error("Exception while calling LoggingEvent.getKeySetMethod",
- ex.getTargetException());
- } catch(Exception ex) {
- LogLog.error("Exception while calling LoggingEvent.getKeySetMethod",
- ex);
- }
- } else {
- //
- // for 1.2.14 and earlier could serialize and
- // extract MDC content
- try {
- ByteArrayOutputStream outBytes = new ByteArrayOutputStream();
- ObjectOutputStream os = new ObjectOutputStream(outBytes);
- os.writeObject(event);
- os.close();
-
- byte[] raw = outBytes.toByteArray();
- //
- // bytes 6 and 7 should be the length of the original classname
- // should be the same as our substitute class name
- final String subClassName = LogEvent.class.getName();
- if (raw[6] == 0 || raw[7] == subClassName.length()) {
- //
- // manipulate stream to use our class name
- //
- for (int i = 0; i < subClassName.length(); i++) {
- raw[8 + i] = (byte) subClassName.charAt(i);
- }
- ByteArrayInputStream inBytes = new ByteArrayInputStream(raw);
- ObjectInputStream is = new ObjectInputStream(inBytes);
- Object cracked = is.readObject();
- if (cracked instanceof LogEvent) {
- keySet = ((LogEvent) cracked).getPropertyKeySet();
- }
- is.close();
+ public Object extract(final LogRecord record) {
+ Object context = record.getContext();
+ if (context instanceof PropertyContext) {
+ PropertyContext properties = (PropertyContext) context;
+ if (key == null) {
+ return new HashMap<String, Object>(properties.getProperties());
+ } else {
+ return properties.getProperties().get(key);
}
- } catch(Exception ex) {
- LogLog.error("Unexpected exception while extracting MDC keys", ex);
- }
- }
-
- if (keySet != null) {
- for (Iterator i = keySet.iterator(); i.hasNext();) {
- Object item = i.next();
- Object val = event.getMDC(item.toString());
- toAppendTo.append("{").append(item).append(",").append(val).append(
- "}");
}
- }
+ return null;
+ }
+ /**
+ * {@inheritDoc}
+ */
+ public void render(Object extract, Locale locale, T destination)
+ throws IOException {
+ if (extract instanceof String) {
+ destination.append(extract.toString());
+ } else if (extract != null) {
+ Map<String, Object> properties = (Map<String, Object>) extract;
+ destination.append('{');
+ for(Map.Entry<String, Object> entry : properties.entrySet()) {
+ destination.append(entry.getKey());
+ destination.append(',');
+ destination.append(String.valueOf(entry.getValue()));
+ }
+ destination.append('}');
+ }
+ }
- toAppendTo.append("}");
- } else {
- // otherwise they just want a single key output
- Object val = event.getMDC(option);
-
- if (val != null) {
- toAppendTo.append(val);
- }
+ /**
+ * {@inheritDoc}
+ */
+ public void format(LogRecord record, Locale locale, T destination)
+ throws IOException {
+ render(extract(record), locale, destination);
}
- }
+
}
Added: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceClassNameLayout.java
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceClassNameLayout.java?view=auto&rev=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceClassNameLayout.java \
(added)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceClassNameLayout.java \
Sat Apr 28 11:43:37 2007 @@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.pattern;
+
+import org.apache.logging.core.LogRecord;
+
+/**
+ * This layout appends the class name of the
+ * source of the log request.
+ *
+ * @PatternSpecifier("C", "classname");
+ */
+public final class SourceClassNameLayout<T extends Appendable>
+ extends StringLayout<T> {
+
+ /**
+ * Create new instance.
+ */
+ public SourceClassNameLayout() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object extract(final LogRecord record) {
+ StackTraceElement location = record.getSource();
+ if (location != null) {
+ return location.getClassName();
+ }
+ return null;
+ }
+}
Added: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceFileNameLayout.java
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceFileNameLayout.java?view=auto&rev=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceFileNameLayout.java \
(added)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceFileNameLayout.java \
Sat Apr 28 11:43:37 2007 @@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.pattern;
+
+import org.apache.logging.core.LogRecord;
+
+/**
+ * This layout appends the method name of the
+ * source of the log request.
+ *
+ * @PatternSpecifier("L", "line");
+ */
+public final class SourceFileNameLayout<T extends Appendable>
+ extends StringLayout<T> {
+
+ /**
+ * Create new instance.
+ */
+ public SourceFileNameLayout() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object extract(final LogRecord record) {
+ StackTraceElement location = record.getSource();
+ if (location != null) {
+ return location.getFileName();
+ }
+ return null;
+ }
+}
Added: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceLineNumberLayout.java
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/SourceLineNumberLayout.java?view=auto&rev=533406 \
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceLineNumberLayout.java \
(added)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceLineNumberLayout.java \
Sat Apr 28 11:43:37 2007 @@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.pattern;
+
+import org.apache.logging.core.LogRecord;
+
+/**
+ * This layout appends the line number of the
+ * source of the log request.
+ *
+ * @PatternSpecifier("L", "line");
+ */
+public final class SourceLineNumberLayout<T extends Appendable>
+ extends StringLayout<T> {
+
+ /**
+ * Create new instance.
+ */
+ public SourceLineNumberLayout() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object extract(final LogRecord record) {
+ StackTraceElement location = record.getSource();
+ if (location != null) {
+ return location.getLineNumber();
+ }
+ return null;
+ }
+}
Added: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceMethodNameLayout.java
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/SourceMethodNameLayout.java?view=auto&rev=533406 \
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceMethodNameLayout.java \
(added)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/SourceMethodNameLayout.java \
Sat Apr 28 11:43:37 2007 @@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.pattern;
+
+import org.apache.logging.core.LogRecord;
+
+/**
+ * This layout appends the method name of the
+ * source of the log request.
+ *
+ * @PatternSpecifier("M", "method");
+ */
+public final class SourceMethodNameLayout<T extends Appendable>
+ extends StringLayout<T> {
+
+ /**
+ * Create new instance.
+ */
+ public SourceMethodNameLayout() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object extract(final LogRecord record) {
+ StackTraceElement location = record.getSource();
+ if (location != null) {
+ return location.getMethodName();
+ }
+ return null;
+ }
+}
Added: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/StringLayout.java
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/StringLayout.java?view=auto&rev=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/StringLayout.java \
(added)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/StringLayout.java \
Sat Apr 28 11:43:37 2007 @@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.pattern;
+
+import org.apache.logging.core.Layout;
+import org.apache.logging.core.LogRecord;
+
+import java.io.IOException;
+import java.util.Locale;
+
+/**
+ * Abstract class for any layout that extracts a
+ * string from the log record and writes to an Appendable.
+ *
+ *
+ */
+public abstract class StringLayout<T extends Appendable>
+ implements Layout<T> {
+ protected StringLayout() {
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void render(Object extract, Locale locale, T destination)
+ throws IOException {
+ destination.append(String.valueOf(extract));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void format(LogRecord record, Locale locale, T destination)
+ throws IOException {
+ render(extract(record), locale, destination);
+ }
+
+}
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/ThreadNameLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/ThreadPatternConverter.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/ThreadNameLayout.java?view=diff&rev=533406&p1=logging \
/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/ThreadPatt \
ernConverter.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/ThreadNameLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/ThreadPatternConverter.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/ThreadNameLayout.java \
Sat Apr 28 11:43:37 2007 @@ -14,46 +14,29 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.apache.logging.pattern;
-package org.apache.log4j.pattern;
-
-import org.apache.log4j.spi.LoggingEvent;
-
+import org.apache.logging.core.LogRecord;
/**
- * Formats the event thread name.
+ * This layout appends the method name of the
+ * source of the log request.
*
- * @author Ceki Gülcü
- * @since 1.3
+ * @PatternSpecifier("M", "method");
*/
-public class ThreadPatternConverter extends LoggingEventPatternConverter {
- /**
- * Singleton.
- */
- private static final ThreadPatternConverter INSTANCE =
- new ThreadPatternConverter();
-
- /**
- * Private constructor.
- */
- private ThreadPatternConverter() {
- super("Thread", "thread");
- }
-
- /**
- * Obtains an instance of ThreadPatternConverter.
- * @param options options, currently ignored, may be null.
- * @return instance of ThreadPatternConverter.
- */
- public static ThreadPatternConverter newInstance(
- final String[] options) {
- return INSTANCE;
- }
+public final class ThreadNameLayout<T extends Appendable>
+ extends StringLayout<T> {
- /**
- * {@inheritDoc}
- */
- public void format(final LoggingEvent event, final StringBuffer toAppendTo) {
- toAppendTo.append(event.getThreadName());
- }
+ /**
+ * Create new instance.
+ */
+ public ThreadNameLayout() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object extract(final LogRecord record) {
+ return record.getThreadName();
+ }
}
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/ThrownLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/ThrowableInformationPatternConverter.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/ThrownLayout.java?view=diff&rev=533406&p1=logging/san \
dbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/ThrowableInfor \
mationPatternConverter.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/ThrownLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/ThrowableInformationPatternConverter.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/ThrownLayout.java \
Sat Apr 28 11:43:37 2007 @@ -14,87 +14,47 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.apache.logging.pattern;
-package org.apache.log4j.pattern;
-
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.spi.ThrowableInformation;
+import org.apache.logging.core.Layout;
+import org.apache.logging.core.LogRecord;
+import java.io.IOException;
+import java.util.Locale;
/**
- * Outputs the ThrowableInformation portion of the LoggingiEvent as a full \
stacktrace
- * unless this converter's option is 'short', where it just outputs the first line \
of the trace. + * Formats any throwable object provide to the logging request.
*
- * @author Paul Smith
- * @since 1.3
+ * @Immutable
*
*/
-public class ThrowableInformationPatternConverter
- extends LoggingEventPatternConverter {
- /**
- * If "short", only first line of throwable report will be formatted.
- */
- private final String option;
-
- /**
- * Private constructor.
- * @param options options, may be null.
- */
- private ThrowableInformationPatternConverter(
- final String[] options) {
- super("Throwable", "throwable");
-
- if ((options != null) && (options.length > 0)) {
- option = options[0];
- } else {
- option = null;
+public final class ThrownLayout<T extends Appendable>
+ implements Layout<T> {
+ protected ThrownLayout() {
+
+ }
+
+ /** {@inheritDoc} */
+ public Object extract(LogRecord record) {
+ return record.getThrown();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @TODO
+ */
+ public void render(Object extract, Locale locale, T destination)
+ throws IOException {
+ destination.append(String.valueOf(extract));
}
- }
- /**
- * Gets an instance of the class.
- * @param options pattern options, may be null. If first element is "short",
- * only the first line of the throwable will be formatted.
- * @return instance of class.
- */
- public static ThrowableInformationPatternConverter newInstance(
- final String[] options) {
- return new ThrowableInformationPatternConverter(options);
- }
-
- /**
- * {@inheritDoc}
- */
- public void format(final LoggingEvent event, final StringBuffer toAppendTo) {
- ThrowableInformation information = event.getThrowableInformation();
-
- if (information != null) {
- String[] stringRep = information.getThrowableStrRep();
-
- int length = 0;
-
- if (option == null) {
- length = stringRep.length;
- } else if (option.equals("full")) {
- length = stringRep.length;
- } else if (option.equals("short")) {
- length = 1;
- } else {
- length = stringRep.length;
- }
-
- for (int i = 0; i < length; i++) {
- String string = stringRep[i];
- toAppendTo.append(string).append("\n");
- }
+ /**
+ * {@inheritDoc}
+ */
+ public void format(LogRecord record, Locale locale, T destination)
+ throws IOException {
+ render(extract(record), locale, destination);
}
- }
- /**
- * This converter obviously handles throwables.
- * @return true.
- */
- public boolean handlesThrowable() {
- return true;
- }
}
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/ValueContextLayout.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/NDCPatternConverter.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/ValueContextLayout.java?view=diff&rev=533406&p1=loggi \
ng/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/NDCPatte \
rnConverter.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/ValueContextLayout.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/NDCPatternConverter.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/ValueContextLayout.java \
Sat Apr 28 11:43:37 2007 @@ -14,46 +14,33 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+package org.apache.logging.pattern;
-package org.apache.log4j.pattern;
-
-import org.apache.log4j.spi.LoggingEvent;
-
+import org.apache.logging.core.LogRecord;
+import org.apache.logging.core.ValueContext;
/**
- * Return the event's NDC in a StringBuffer.
+ * This layout appends the value of the context of the log request.
*
- * @author Ceki Gülcü
- * @since 1.3
+ * @PatternSpecifier("N", "ndc");
*/
-public final class NDCPatternConverter extends LoggingEventPatternConverter {
- /**
- * Singleton.
- */
- private static final NDCPatternConverter INSTANCE =
- new NDCPatternConverter();
-
- /**
- * Private constructor.
- */
- private NDCPatternConverter() {
- super("NDC", "ndc");
- }
-
- /**
- * Obtains an instance of NDCPatternConverter.
- * @param options options, may be null.
- * @return instance of NDCPatternConverter.
- */
- public static NDCPatternConverter newInstance(
- final String[] options) {
- return INSTANCE;
- }
+public final class ValueContextLayout<T extends Appendable>
+ extends StringLayout<T> {
- /**
- * {@inheritDoc}
- */
- public void format(final LoggingEvent event, final StringBuffer toAppendTo) {
- toAppendTo.append(event.getNDC());
- }
+ /**
+ * Create new instance.
+ */
+ public ValueContextLayout() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object extract(final LogRecord record) {
+ Object context = record.getContext();
+ if (context instanceof ValueContext) {
+ return ((ValueContext) context).getValue();
+ }
+ return null;
+ }
}
Propchange: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/ValueContextLayout.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/ValueContextLayout.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/impl/CachedDateFormat.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/CachedDateFormat.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/impl/CachedDateFormat.java?view=diff&rev=533406&p1=lo \
gging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/Cache \
dDateFormat.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/impl/CachedDateFormat.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/CachedDateFormat.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/impl/CachedDateFormat.java \
Sat Apr 28 11:43:37 2007 @@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.log4j.pattern;
+package org.apache.logging.pattern.impl;
import java.text.DateFormat;
import java.text.FieldPosition;
Copied: logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/impl/PatternParser.java \
(from r533235, logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/PatternParser.java)
URL: http://svn.apache.org/viewvc/logging/sandbox/experimental/pattern-layout/src/main \
/java/org/apache/logging/pattern/impl/PatternParser.java?view=diff&rev=533406&p1=loggi \
ng/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/PatternP \
arser.java&r1=533235&p2=logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/impl/PatternParser.java&r2=533406
==============================================================================
--- logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/log4j/pattern/PatternParser.java \
(original)
+++ logging/sandbox/experimental/pattern-layout/src/main/java/org/apache/logging/pattern/impl/PatternParser.java \
Sat Apr 28 11:43:37 2007 @@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.log4j.pattern;
+package org.apache.logging.pattern.impl;
import org.apache.log4j.helpers.Loader;
import org.apache.log4j.helpers.LogLog;
@@ -27,6 +27,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.log4j.pattern.*;
// Contributors: Nelson Minar <(nelson@monkey.org>
// Igor E. Poteryaev <jah@mail.ru>
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic