logback指定プロファイル
2344 ワード
カラカラでlogback形式のプロファイルを使いたいですが、Pax-logger-api Xが全部カバーされています.そして、カラフ自体のロゴ4 jを使いますよね.
ローディング環境変数Karaf下etc/sylogs.xmlをデフォルトのログとして設定し、ユーザが仮想マシン-logback.co-figrationFileでプロファイルを指定した場合、syloglog.xmlは無効になります.
public class SysLogInitActivator implements BundleActivator
{
public static final String KARAF_HOME = "karaf_home";
public static final String CONFIG_FILE = "syslog.xml";
public static final String logbackPropName = "logback.configurationFile";
public void start(BundleContext context) throws Exception
{
String logConfigPath = System.getProperty(logbackPropName);
if (logConfigPath == null || "".equals(logConfigPath))
{
String _karaf_home = System.getenv(KARAF_HOME);
if (_karaf_home == null || "".equals(_karaf_home))
{
throw new IllegalArgumentException(
"ERROR: Need Setting Environment Variables karaf_home");
}else{
System.out.println("INFO: system environment variables karaf_home is " + _karaf_home);
}
File logFile = new File(_karaf_home + File.separatorChar + "etc" + File.separatorChar
+ CONFIG_FILE);
if (!logFile.exists())
{
System.err.println("WARN: not log config file " + logFile.getAbsolutePath()
+ ", will use default.");
}
else
{
LoggerContext loggerContext = (LoggerContext) StaticLoggerBinder.getSingleton()
.getLoggerFactory();
loggerContext.reset();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(loggerContext);
configurator.doConfigure(logFile.getAbsoluteFile());
System.out.println("INFO: use log config " + logFile.getAbsolutePath());
}
}
else
{
System.out.println("INFO: use log config " + logConfigPath + " defined in JVM Param");
}
}
public void stop(BundleContext context) throws Exception
{
System.out.println("sys log bundle close");
}
}
用途 ローディング環境変数Karaf下etc/sylogs.xmlをデフォルトのログとして設定し、ユーザが仮想マシン-logback.co-figrationFileでプロファイルを指定した場合、syloglog.xmlは無効になります.