Nutz是个不错的轻量级框架,小巧易用,不了解到同学可以见http://code.google.com/p/nutz/
不过Nutz中的日志默认依赖Log4J,内部的日志信息都会依赖Log4J,对于我这样喜欢用SLF4J来说实在是不爽。
好吧自己动手改造一下,好在Nutz的日志设计的不错,改一下不难。
先在org.nutz.log.impl包下加一个SLF4JLogAdapter的类:
public class SLF4JLogAdapter implements LogAdapter, Plugin {
public Log getLogger(String className) {
return new SLF4JLogger(className);
}
public boolean canWork() {
try {
Class.forName("org.slf4j.Logger", false, Thread.currentThread().getContextClassLoader());
return true;
}
catch (Throwable e) {}
return false;
}
static class SLF4JLogger extends AbstractLog {
private Logger logger;
SLF4JLogger(String className) {
logger = LoggerFactory.getLogger(className);
isErrorEnabled = logger.isErrorEnabled();
isWarnEnabled = logger.isWarnEnabled();
isInfoEnabled = logger.isInfoEnabled();
isDebugEnabled = logger.isDebugEnabled();
isTraceEnabled = logger.isTraceEnabled();
}
public void debug(Object message, Throwable t) {
if (isDebugEnabled())
logger.debug((String)message, t);
}
public void error(Object message, Throwable t) {
if (isErrorEnabled())
logger.error((String)message, t);
}
public void fatal(Object message, Throwable t) {
if (isFatalEnabled())
logger.error((String)message, t);
}
public void info(Object message, Throwable t) {
if (isInfoEnabled())
logger.info((String)message, t);
}
public void trace(Object message, Throwable t) {
if (isTraceEnabled())
logger.trace((String)message, t);
}
public void warn(Object message, Throwable t) {
if (isWarnEnabled())
logger.warn((String)message, t);
}
@Override
protected void log(int level, Object message, Throwable tx) {
switch (level) {
case LEVEL_FATAL:
logger.error((String)message, tx);
break;
case LEVEL_ERROR:
logger.error((String)message, tx);
break;
case LEVEL_WARN:
logger.warn((String)message, tx);
break;
case LEVEL_INFO:
logger.info((String)message, tx);
break;
case LEVEL_DEBUG:
logger.debug((String)message, tx);
break;
case LEVEL_TRACE:
logger.trace((String)message, tx);
break;
default:
break;
}
}
}
}
然后改一下org.nutz.log.Logs这个工厂类的init方法:
public static void init() {
try {
adapter = new SimplePluginManager<LogAdapter>( "org.nutz.log.impl.SLF4JLogAdapter").get();
}
catch (Throwable e) {
e.printStackTrace();
}
}
OK完成了~~
注意SLF4J只是个日志接口,还需要特定的实现,推荐使用logback,详细见另一个帖子
================================================================
后记:
我在Nutz上已提了issue,但是Nutz作者表示不会内置支持SLF4J,要用的话可以通过log4j-over-slf4j.jar转换来实现。
但是我个人不喜欢这种方式,一是需要多依赖jar包,另外总觉得别扭~~
分享到:
相关推荐
`nutz-log`提供了日志记录功能,可以根据需求选择不同的日志实现,如log4j、slf4j等;`nutz-utils`则是一些通用的工具类,如字符串处理、日期时间操作等。 在实际项目中,根据需求可能还需要引入一些额外的jar包,...
7. **日志和异常处理**:Nutz通常会集成日志库,如Log4j或SLF4J,学习如何配置和使用日志系统,以及如何优雅地处理程序异常。 8. **国际化与本地化**:Nutz支持多语言环境,了解如何在项目中实现国际化和本地化功能...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...