use of org.apache.log4j.Appender in project apex-core by apache.
the class LoggerUtilTest method testAndRemoveAppender.
private static void testAndRemoveAppender(String name) {
Appender appender = org.apache.log4j.Logger.getRootLogger().getAppender(name);
assertNotNull(appender);
assertTrue(LoggerUtil.getAppendersNames().contains(name));
LoggerUtil.removeAppender(name);
assertNull(org.apache.log4j.Logger.getRootLogger().getAppender(name));
}
use of org.apache.log4j.Appender in project voltdb by VoltDB.
the class VoltLog4jLogger method setFileLoggerRoot.
/**
* Static method to change the log directory root
* @param logRootDH log directory root
*/
public static void setFileLoggerRoot(File logRootDH) {
if (System.getProperty("log4j.configuration", "").toLowerCase().contains("/voltdb/tests/")) {
return;
}
if (Boolean.parseBoolean(System.getProperty("DISABLE_LOG_RECONFIGURE", "false"))) {
return;
}
checkArgument(logRootDH != null, "log root directory is null");
File logDH = new File(logRootDH, "log");
File napFH = new File(logDH, "volt.log");
Logger rootLogger = LogManager.getRootLogger();
DailyRollingFileAppender oap = null;
@SuppressWarnings("unchecked") Enumeration<Appender> appen = rootLogger.getAllAppenders();
while (appen.hasMoreElements()) {
Appender appndr = appen.nextElement();
if (!(appndr instanceof DailyRollingFileAppender))
continue;
oap = (DailyRollingFileAppender) appndr;
File logFH = new File(oap.getFile());
if (!logFH.isAbsolute())
break;
oap = null;
}
if (oap == null) {
return;
}
DailyRollingFileAppender nap = null;
try {
if (!logDH.exists() && !logDH.mkdirs()) {
throw new IllegalArgumentException("failed to create directory " + logDH);
}
if (!logDH.isDirectory() || !logDH.canRead() || !logDH.canWrite() || !logDH.canExecute()) {
throw new IllegalArgumentException("Cannot access " + logDH);
}
nap = new DailyRollingFileAppender(oap.getLayout(), napFH.getPath(), oap.getDatePattern());
} catch (IOException e) {
throw new IllegalArgumentException("Failed to instantiate a DailyRollingFileAppender for file " + napFH, e);
}
nap.setName(oap.getName());
rootLogger.removeAppender(oap.getName());
rootLogger.addAppender(nap);
File oldFH = new File(oap.getFile());
if (oldFH.exists() && oldFH.isFile() && oldFH.length() == 0L && oldFH.delete()) {
File oldDH = oldFH.getParentFile();
if (oldDH.list().length == 0) {
oldDH.delete();
}
}
@SuppressWarnings("unchecked") Enumeration<Logger> e = LogManager.getCurrentLoggers();
while (e.hasMoreElements()) {
Logger lgr = e.nextElement();
Appender apndr = lgr.getAppender(oap.getName());
if (apndr != null) {
lgr.removeAppender(oap.getName());
lgr.addAppender(nap);
}
}
}
use of org.apache.log4j.Appender in project ignite by apache.
the class GridCacheAbstractLoadTest method configuration.
/**
* Initializes configurations.
*
* @param springCfgPath Configuration file path.
* @param log Log file name.
* @return Configuration.
* @throws IgniteCheckedException If fails.
*/
@SuppressWarnings("unchecked")
protected IgniteConfiguration configuration(String springCfgPath, String log) throws IgniteCheckedException {
File path = GridTestUtils.resolveIgnitePath(springCfgPath);
if (path == null)
throw new IgniteCheckedException("Spring XML configuration file path is invalid: " + new File(springCfgPath) + ". Note that this path should be either absolute path or a relative path to IGNITE_HOME.");
if (!path.isFile())
throw new IgniteCheckedException("Provided file path is not a file: " + path);
// Add no-op logger to remove no-appender warning.
Appender app = new NullAppender();
Logger.getRootLogger().addAppender(app);
ApplicationContext springCtx;
try {
springCtx = new FileSystemXmlApplicationContext(path.toURI().toURL().toString());
} catch (BeansException | MalformedURLException e) {
throw new IgniteCheckedException("Failed to instantiate Spring XML application context: " + e.getMessage(), e);
}
Map cfgMap;
try {
// Note: Spring is not generics-friendly.
cfgMap = springCtx.getBeansOfType(IgniteConfiguration.class);
} catch (BeansException e) {
throw new IgniteCheckedException("Failed to instantiate bean [type=" + IgniteConfiguration.class + ", err=" + e.getMessage() + ']', e);
}
if (cfgMap == null)
throw new IgniteCheckedException("Failed to find a single grid factory configuration in: " + path);
// Remove previously added no-op logger.
Logger.getRootLogger().removeAppender(app);
if (cfgMap.isEmpty())
throw new IgniteCheckedException("Can't find grid factory configuration in: " + path);
else if (cfgMap.size() > 1)
throw new IgniteCheckedException("More than one configuration provided for cache load test: " + cfgMap.values());
IgniteConfiguration cfg = (IgniteConfiguration) cfgMap.values().iterator().next();
cfg.setGridLogger(initLogger(log));
cfg.getTransactionConfiguration().setDefaultTxIsolation(isolation);
cfg.getTransactionConfiguration().setDefaultTxConcurrency(concurrency);
return cfg;
}
use of org.apache.log4j.Appender in project ignite by apache.
the class Log4JLogger method addConsoleAppenderIfNeeded.
/**
* Adds console appender when needed with some default logging settings.
*
* @param logLevel Optional log level.
* @param implInitC Optional log implementation init closure.
*/
private void addConsoleAppenderIfNeeded(@Nullable Level logLevel, @Nullable IgniteClosure<Boolean, Logger> implInitC) {
if (inited) {
if (implInitC != null)
// Do not init.
impl = implInitC.apply(false);
return;
}
synchronized (mux) {
if (inited) {
if (implInitC != null)
// Do not init.
impl = implInitC.apply(false);
return;
}
if (implInitC != null)
// Init logger impl.
impl = implInitC.apply(true);
boolean quiet = Boolean.valueOf(System.getProperty(IGNITE_QUIET, "true"));
boolean consoleAppenderFound = false;
Category rootCategory = null;
ConsoleAppender errAppender = null;
for (Category l = impl; l != null; ) {
if (!consoleAppenderFound) {
for (Enumeration appenders = l.getAllAppenders(); appenders.hasMoreElements(); ) {
Appender appender = (Appender) appenders.nextElement();
if (appender instanceof ConsoleAppender) {
if ("CONSOLE_ERR".equals(appender.getName())) {
// Treat CONSOLE_ERR appender as a system one and don't count it.
errAppender = (ConsoleAppender) appender;
continue;
}
consoleAppenderFound = true;
break;
}
}
}
if (l.getParent() == null) {
rootCategory = l;
break;
} else
l = l.getParent();
}
if (consoleAppenderFound && quiet)
// User configured console appender, but log is quiet.
quiet = false;
if (!consoleAppenderFound && !quiet && Boolean.valueOf(System.getProperty(IGNITE_CONSOLE_APPENDER, "true"))) {
// Console appender not found => we've looked through all categories up to root.
assert rootCategory != null;
// to configuration and did not set IGNITE_CONSOLE_APPENDER to false.
if (errAppender != null) {
rootCategory.addAppender(createConsoleAppender(Level.INFO));
if (errAppender.getThreshold() == Level.ERROR)
errAppender.setThreshold(Level.WARN);
} else
// No error console appender => create console appender with no level limit.
rootCategory.addAppender(createConsoleAppender(Level.OFF));
if (logLevel != null)
impl.setLevel(logLevel);
}
// If still don't have appenders, disable logging.
if (!isConfigured())
impl.setLevel(Level.OFF);
quiet0 = quiet;
inited = true;
}
}
use of org.apache.log4j.Appender in project leopard by tanhaichao.
the class LogDaoLog4jImpl method addAppender.
private void addAppender(Logger logger, Level level, String filename, boolean bufferedIO) {
org.apache.log4j.Level log4jLevel = toLog4jLevel(level);
Appender appender = this.getAppender(filename, log4jLevel, bufferedIO);
logger.setLevel(log4jLevel);
logger.addAppender(appender);
}
Aggregations