『壹』 slf4j-api,slf4j-log4j12以及log4j之间什么关系
有很碰桥多啊,有Log4j,LogBack,甚至JDK自带的Logger都是slf4j的实现类。你如果要使基吵源用Log4j,那么除了slf4j-api外还需要一个slf4j-log4j12(或slf4j-log4j13这个根据你的Log4j的版本来),你如果要使用JDK作为实现的话,那么除了slf4j-api外,还需要slf4j-jdk14-1.5.10。依次类推。slf4j的作者就是Log4j的作者,他现在已经不推荐使用log4j了,推荐使用logback。当系统采用log4j作为日志框架实现的调用关系:首先系统包含slf4j-api作为日志接入的接口;at compile时slf4j-api中public final class LoggerFactor类中private final static void bind() 方法会寻找具体的日志实现类绑定,搏态主要通过StaticLoggerBinder.getSingleton();语句调用slf4j-log4j12:链接slf4j-api和log4j中间的适配器。它实现了slf4j-apiz中StaticLoggerBinder接口,从而使得在编译时绑定的是slf4j-log4j12的getSingleton()方法log4j:这个是具体的日志系统。通过slf4j-log4j12初始化Log4j,达到最终日志的输出。
『贰』 slf4j-api,slf4j-log4j12以及log4j之间什么关系
log4j是具体的日志系统,实现日志功能的,slf4j-log4j12是slf4j和神烂肆log4j的中间游轿适配器,slf4j-api类似是一个自定义的日志接口集合,历烂用户可以通过slf4j-api自行实现不同的日志类型,绑定不同的程序,而具体的日志实现就看log4j了
『叁』 slf4j-api,slf4j-log4j12以及log4j之间什么关系
slf4j.nop.jar是slf-api.jar其相应的接口实现, 把slf的接口对到log4j的实现 把slf的实现slf4j-nop-1.5.8.jar去掉,添加log4j的实现log4j-1.2.15.jar,再添加一个slf-api和log4j转换器slf4j-log4j12-1.5.8.jar. 把slf的接行枯如口转档启换成败笑log4j的接口.最后添加一个log4j的配置文件log4j.properties (当然我所用的版本和你用的版本也许不一致)
『肆』 log4j和slf4j的使用
sfl4j是简单日志门面,而log4j是一个完整的日志框架。一般在java开发的过程中,会将log4j和slf4j结合起来行森使用。 该文件放到工程的resource目录下,且保证文件名是“log4j.properties”,不能做更改。具体配置可以参考如下进行配置 定义log对象 开始档差亩输出庆羡日志
『伍』 LOG4J错误
你的log4j配置的是将日记信息 通过socket方式写到 本地4445端口,而你本地没有开启一个socket服务器来接收信息。解决方法:1.开启本地socket:新建一个类:import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Test { public static void main(String[] args) { ServerSocket serverSocket; try { serverSocket = new ServerSocket(4445); } catch (IOException e1) { e1.printStackTrace(); return; } while(true){ try { Socket socket = serverSocket.accept(); System.out.println("一个客户端连接上!"); //do some thing } catch (IOException e) { e.printStackTrace(); } } }}2.如果没有必要通过socket来记录这个日志信息,建议采用文件的方式,将配置文件改为:log4j.rootLogger=DEBUG, SOCKETlog4j.appender.SOCKET=org.apache.log4j.FileAppenderlog4j.appender.SOCKET.file="D:\\log.txt"log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout log4j.appender.SOCKET.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c – %m%n
『陆』 log4j和slf4j的结合使用,请解释每个符号的具体含义:%d{ABSOLUTE} %5p %c{1}:%L – %m%n
log4j.properties# %m 输出代码中指定的消息# %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL # %r 输出自应用启动到输出该log信息耗费的毫秒数 # %c 输出所属的类目,通常就是所在类的全名 # %t 输出产生该日志事件的线程名 # %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” # %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 # %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c – %m%n#日志文件 每日log4j.appender.A1=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A1.File=F:/mylog.txtlog4j.appender.A1.layout=org.apache.log4j.PatternLayout#%时间 [%线程] %log级别 %完整类名 – %消息 %换行log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c – %m%n
『柒』 slf4j和log4j区别
Slf4j是日志记和派迹录的接口(只定义了一些方法没有实现),就像commons-logging一样。而log4j是具体实现羡颤(即如何打印日志等。),和logback一样。两者都是两套日志的接口,slf4j.jar和log4j,都是按照通唤并用日志的标准开发的。可以说是竞争关系。相对来说,log4j使用的相对更多。Hibernate使用slf4j记录日志,但是也有可能改变api,用log4j代替。很多人都这样。