fileAppender.setFile(file.toString()); fileAppender.setContext(context); fileAppender.start();
/** * Programmatically (i.e. not in XML) create a Logback logger for requests happening on this router. * http://stackoverflow.com/a/17215011/778449 */ private static Logger createLogger(String file) { LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); PatternLayoutEncoder ple = new PatternLayoutEncoder(); ple.setPattern("%d{yyyy-MM-dd'T'HH:mm:ss.SSS} %msg%n"); ple.setContext(lc); ple.start(); FileAppender<ILoggingEvent> fileAppender = new FileAppender<>(); fileAppender.setFile(file); fileAppender.setEncoder(ple); fileAppender.setContext(lc); fileAppender.start(); Logger logger = (Logger) LoggerFactory.getLogger("REQ_LOG"); logger.addAppender(fileAppender); logger.setLevel(Level.INFO); logger.setAdditive(false); return logger; } }
/** * Creates a file appender and adds it to logback. * * @param verboseLog the path to the verbose log file */ private void prepareLogger(String verboseLog) { final StaticLoggerBinder loggerBinder = StaticLoggerBinder.getSingleton(); final LoggerContext context = (LoggerContext) loggerBinder.getLoggerFactory(); final PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setPattern("%d %C:%L%n%-5level - %msg%n"); encoder.setContext(context); encoder.start(); final FileAppender<ILoggingEvent> fa = new FileAppender<>(); fa.setAppend(true); fa.setEncoder(encoder); fa.setContext(context); fa.setFile(verboseLog); final File f = new File(verboseLog); String name = f.getName(); final int i = name.lastIndexOf('.'); if (i > 1) { name = name.substring(0, i); } fa.setName(name); fa.start(); final ch.qos.logback.classic.Logger rootLogger = context.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME); rootLogger.addAppender(fa); }
/** * Initializes the logger. This is called when we need to create a new * logger for the given file name. * * @param fileStr * @return a new Logger instance for the given fileStr * @throws IOException */ protected Logger initLogger(String fileStr) throws IOException { String loggerName = "NagiosWriter" + this.hashCode(); final PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setContext(loggerContext); encoder.setPattern(LOG_PATTERN); encoder.start(); final FileAppender appender = new FileAppender(); appender.setContext(loggerContext); appender.setName(loggerName + "File"); appender.setAppend(true); appender.setBufferSize(new FileSize(LOG_IO_BUFFER_SIZE_BYTES)); appender.setFile(fileStr); appender.setEncoder(encoder); appender.start(); Logger logger = loggerContext.getLogger(loggerName); logger.addAppender(appender); logger.setLevel(Level.INFO); logger.setAdditive(false); return logger; }
public FileAppender<ILoggingEvent> newFileAppender(LoggerContext ctx, Props props, RootLoggerConfig config, String logPattern) { RollingPolicy rollingPolicy = createRollingPolicy(ctx, props, config.getProcessId().getLogFilenamePrefix()); FileAppender<ILoggingEvent> fileAppender = rollingPolicy.createAppender("file_" + config.getProcessId().getLogFilenamePrefix()); fileAppender.setContext(ctx); PatternLayoutEncoder fileEncoder = new PatternLayoutEncoder(); fileEncoder.setContext(ctx); fileEncoder.setPattern(logPattern); fileEncoder.start(); fileAppender.setEncoder(fileEncoder); fileAppender.start(); return fileAppender; }
private static void configureLogbackAccess(Tomcat tomcat, Props props) { if (props.valueAsBoolean(PROPERTY_ENABLE, true)) { ProgrammaticLogbackValve valve = new ProgrammaticLogbackValve(); LogbackHelper helper = new LogbackHelper(); LogbackHelper.RollingPolicy policy = helper.createRollingPolicy(valve, props, "access"); FileAppender appender = policy.createAppender("ACCESS_LOG"); PatternLayoutEncoder fileEncoder = new PatternLayoutEncoder(); fileEncoder.setContext(valve); fileEncoder.setPattern(props.value(PROPERTY_PATTERN, DEFAULT_SQ_ACCESS_LOG_PATTERN)); fileEncoder.start(); appender.setEncoder(fileEncoder); appender.start(); valve.addAppender(appender); tomcat.getHost().getPipeline().addValve(valve); } }
fileAppender.setEncoder(ple); fileAppender.setContext(lc); fileAppender.start();
fileAppender.setEncoder(ple); fileAppender.setContext(lc); fileAppender.start();
public FileAppender<ILoggingEvent> buildFileAppender(LoggerContext context, String file) { FileAppender<ILoggingEvent> fileAppender = new FileAppender<>(); fileAppender.setFile(file); fileAppender.setContext(context); fileAppender.setPrudent(true); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setContext(context); encoder.setPattern(primaryConfiguration.getLoggingPattern().or(baseConfiguration.getLoggingPattern()).or(JavaUtils.LOGBACK_LOGGING_PATTERN)); encoder.start(); fileAppender.setEncoder(encoder); fileAppender.start(); return fileAppender; } }
fileOutput.addFilter(filter); fileOutput.start();
@Test public void collisionWithTwoFileAppenders() { String suffix = "collisionWithToFileAppenders"; FileAppender<String> fileAppender1 = buildFileAppender("FA1", suffix); fileAppender1.start(); FileAppender<String> fileAppender2 = buildFileAppender("FA2", suffix); fileAppender2.start(); statusChecker.assertContainsMatch(Status.ERROR, "'File' option has the same value"); //StatusPrinter.print(context); }
@Test public void lazyAppenderDoesNotOpenFileAtStart() { String filename = CoreTestConstants.OUTPUT_DIR_PREFIX + diff + "testing.txt"; File file = new File(filename); if (file.exists()) file.delete(); FileAppender<Object> fa = getFileAppender(filename); fa.setLazy(true); assertNull("stream is not null", fa.getOutputStream()); fa.start(); assertTrue("expected NOPOutputStream; actual " + fa.getOutputStream().getClass().getSimpleName(), fa.getOutputStream() instanceof NOPOutputStream); assertFalse("file does not exist", file.exists()); }
@Test public void unlazyAppenderOpensFileAtStart() { String filename = CoreTestConstants.OUTPUT_DIR_PREFIX + diff + "testing.txt"; File file = new File(filename); if (file.exists()) file.delete(); FileAppender<Object> fa = getFileAppender(filename); fa.setLazy(false); assertNull("stream is not null", fa.getOutputStream()); fa.start(); assertTrue("expected ResilientFileOutputStream; actual " + fa.getOutputStream().getClass().getSimpleName(), fa.getOutputStream() instanceof ResilientFileOutputStream); assertTrue("file does not exist", file.exists()); }
@Test public void collisionImpossibleForSingleAppender() { FileAppender<String> fileAppender = buildFileAppender("FA", "collisionImpossibleForSingleAppender"); fileAppender.start(); statusChecker.assertIsErrorFree(); }
@Before public void setUp() throws InterruptedException { File outputDir = new File(outputDirStr); outputDir.mkdirs(); fa.setContext(context); fa.setName("FILE"); fa.setEncoder(new EchoEncoder<Object>()); fa.setFile(logfileStr); fa.start(); }
@Before public void setUp() throws InterruptedException { context.getStatusManager().add(new OnConsoleStatusListener()); File outputDir = new File(outputDirStr); outputDir.mkdirs(); fa.setContext(context); fa.setName("FILE"); fa.setPrudent(true); fa.setEncoder(new EchoEncoder<Object>()); fa.setFile(logfileStr); fa.start(); }
protected Appender<Object> getConfiguredAppender() { FileAppender<Object> appender = new FileAppender<Object>(); appender.setEncoder(new NopEncoder<Object>()); appender.setFile(CoreTestConstants.OUTPUT_DIR_PREFIX+"temp.log"); appender.setName("test"); appender.setContext(context); appender.start(); return appender; }
@Test public void appenderStopShouldClearEntryInCollisionMap() { String key = "FA"; FileAppender<String> fileAppender = buildFileAppender(key, "collisionImpossibleForSingleAppender"); fileAppender.start(); assertCollisionMapHasEntry(FA_FILENAME_COLLISION_MAP, key); fileAppender.stop(); assertCollisionMapHasNoEntry(FA_FILENAME_COLLISION_MAP, key); statusChecker.assertIsErrorFree(); }
@Test public void collisionWith_FA_RFA() { String suffix = "collisionWith_FA_RFA"; FileAppender<String> fileAppender1 = buildFileAppender("FA", suffix); fileAppender1.start(); RollingFileAppender<String> rollingfileAppender = buildRollingFileAppender("RFA", suffix, "bla-%d.log"); rollingfileAppender.start(); StatusPrinter.print(context); statusChecker.assertContainsMatch(Status.ERROR, "'File' option has the same value"); }