[
https://issues.apache.org/jira/browse/LOG4J2-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15422646#comment-15422646
]
Johno Crawford edited comment on LOG4J2-1521 at 8/16/16 12:10 PM:
------------------------------------------------------------------
Sure, here it is.
{code:language=java}
final String filename = type.name().toLowerCase(Locale.ENGLISH) + ".csv";
//final String filenamePattern = type.name().toLowerCase(Locale.ENGLISH) +
"-%d{yyyy-MM-dd_HH-mm}.csv.gz";
final String filenamePattern = type.name().toLowerCase(Locale.ENGLISH) +
"-%d{yyyy-MM-dd}.csv.gz";
final TimeBasedTriggeringPolicy timeBasedTriggeringPolicy =
TimeBasedTriggeringPolicy.createPolicy(TimeUnit.DAYS.toMillis(1) + "", "true");
final SizeBasedTriggeringPolicy sizeBasedTriggeringPolicy =
SizeBasedTriggeringPolicy.createPolicy(sizePolicy);
final CompositeTriggeringPolicy policy =
CompositeTriggeringPolicy.createPolicy(timeBasedTriggeringPolicy,
sizeBasedTriggeringPolicy);
final DefaultRolloverStrategy strategy =
DefaultRolloverStrategy.createStrategy(/* one week */ "7", "1", null,
Deflater.DEFAULT_COMPRESSION + "", null, false, config);
final String appenderName = type.name() + "-appender";
final Appender appender = RollingFileAppender.createAppender(root + filename,
root + filenamePattern, /* append */ "true", appenderName, /* bufferedIO */
"true", /* bufferSize */ "8192",
/* immediateFlush */ "false", policy, strategy, layout, /* filter */
null, /* ignoreExceptions */ null, /* advertise */ null, /* advertiseURI */
null, config);
appender.start();
config.addAppender(appender);
final AppenderRef ref = AppenderRef.createAppenderRef(appenderName, Level.INFO,
null);
final String loggerName = type.name();
final LoggerConfig loggerConfig = LoggerConfig.createLogger(/* additivity */
false, Level.INFO, loggerName, "true", new AppenderRef[]{ref}, null, config,
null);
loggerConfig.addAppender(appender, Level.INFO, null);
config.addLogger(loggerName, loggerConfig);
{code}
was (Author: johno):
{code:language=java}
final String filename = type.name().toLowerCase(Locale.ENGLISH) + ".csv";
//final String filenamePattern = type.name().toLowerCase(Locale.ENGLISH) +
"-%d{yyyy-MM-dd_HH-mm}.csv.gz";
final String filenamePattern = type.name().toLowerCase(Locale.ENGLISH) +
"-%d{yyyy-MM-dd}.csv.gz";
final TimeBasedTriggeringPolicy timeBasedTriggeringPolicy =
TimeBasedTriggeringPolicy.createPolicy(TimeUnit.DAYS.toMillis(1) + "", "true");
final SizeBasedTriggeringPolicy sizeBasedTriggeringPolicy =
SizeBasedTriggeringPolicy.createPolicy(sizePolicy);
final CompositeTriggeringPolicy policy =
CompositeTriggeringPolicy.createPolicy(timeBasedTriggeringPolicy,
sizeBasedTriggeringPolicy);
final DefaultRolloverStrategy strategy =
DefaultRolloverStrategy.createStrategy(/* one week */ "7", "1", null,
Deflater.DEFAULT_COMPRESSION + "", null, false, config);
final String appenderName = type.name() + "-appender";
final Appender appender = RollingFileAppender.createAppender(root + filename,
root + filenamePattern, /* append */ "true", appenderName, /* bufferedIO */
"true", /* bufferSize */ "8192",
/* immediateFlush */ "false", policy, strategy, layout, /* filter */
null, /* ignoreExceptions */ null, /* advertise */ null, /* advertiseURI */
null, config);
appender.start();
config.addAppender(appender);
final AppenderRef ref = AppenderRef.createAppenderRef(appenderName, Level.INFO,
null);
final String loggerName = type.name();
final LoggerConfig loggerConfig = LoggerConfig.createLogger(/* additivity */
false, Level.INFO, loggerName, "true", new AppenderRef[]{ref}, null, config,
null);
loggerConfig.addAppender(appender, Level.INFO, null);
config.addLogger(loggerName, loggerConfig);
{code}
> StringIndexOutOfBoundsException thrown when rolling logs
> --------------------------------------------------------
>
> Key: LOG4J2-1521
> URL: https://issues.apache.org/jira/browse/LOG4J2-1521
> Project: Log4j 2
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.6.2
> Environment: Windows 10 Pro 64-bit (10.0, Build 14393)
> (14393.rs1_release.160715-1616)
> java version "1.8.0_73"
> Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
> Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)
> Reporter: Johno Crawford
> Attachments: log4j2-events.zip
>
>
> When prototyping with log4j I ran into an issue with rolling log files.
> {noformat}
> 2016-08-16 08:26:25,304 main ERROR An exception occurred processing Appender
> TABLE1-appender java.lang.StringIndexOutOfBoundsException: String index out
> of range: -1
> at
> java.lang.AbstractStringBuilder.setCharAt(AbstractStringBuilder.java:380)
> at java.lang.StringBuilder.setCharAt(StringBuilder.java:76)
> at
> org.apache.logging.log4j.core.util.datetime.FastDatePrinter$PaddedNumberField.appendTo(FastDatePrinter.java:895)
> at
> org.apache.logging.log4j.core.util.datetime.FastDatePrinter$PaddedNumberField.appendTo(FastDatePrinter.java:880)
> at
> org.apache.logging.log4j.core.util.datetime.FastDatePrinter.applyRules(FastDatePrinter.java:479)
> at
> org.apache.logging.log4j.core.util.datetime.FastDatePrinter.format(FastDatePrinter.java:454)
> at
> org.apache.logging.log4j.core.util.datetime.FastDatePrinter.format(FastDatePrinter.java:442)
> at
> org.apache.logging.log4j.core.util.datetime.FastDateFormat.format(FastDateFormat.java:427)
> at
> org.apache.logging.log4j.core.pattern.DatePatternConverter$PatternFormatter.formatToBuffer(DatePatternConverter.java:70)
> at
> org.apache.logging.log4j.core.pattern.DatePatternConverter.formatWithoutAllocation(DatePatternConverter.java:259)
> at
> org.apache.logging.log4j.core.pattern.DatePatternConverter.format(DatePatternConverter.java:251)
> at
> org.apache.logging.log4j.core.pattern.DatePatternConverter.format(DatePatternConverter.java:238)
> at
> org.apache.logging.log4j.core.pattern.DatePatternConverter.format(DatePatternConverter.java:290)
> at
> org.apache.logging.log4j.core.pattern.DatePatternConverter.format(DatePatternConverter.java:299)
> at
> org.apache.logging.log4j.core.appender.rolling.PatternProcessor.formatFileName(PatternProcessor.java:248)
> at
> org.apache.logging.log4j.core.appender.rolling.PatternProcessor.formatFileName(PatternProcessor.java:233)
> at
> org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy.purgeAscending(DefaultRolloverStrategy.java:323)
> at
> org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy.purge(DefaultRolloverStrategy.java:306)
> at
> org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy.rollover(DefaultRolloverStrategy.java:524)
> at
> org.apache.logging.log4j.core.appender.rolling.RollingFileManager.rollover(RollingFileManager.java:220)
> at
> org.apache.logging.log4j.core.appender.rolling.RollingFileManager.rollover(RollingFileManager.java:155)
> at
> org.apache.logging.log4j.core.appender.rolling.RollingFileManager.checkRollover(RollingFileManager.java:150)
> at
> org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:85)
> at
> org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:155)
> at
> org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:128)
> at
> org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:119)
> at
> org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:390)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:375)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:359)
> at
> org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:349)
> at
> org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
> at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
> at
> org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:1988)
> at
> org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1960)
> at
> org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1297)
> at Main.main(Main.java:60)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]