[ 
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]

Reply via email to