【JDBC打不出日志 _JDBC 】 | IT修真院·坑乎
问题已收录 JDBC打不出日志
我也踩过这个坑( 1 )
已统计您的踩坑,无需重复点击
回答(1)
JDBC
详细描述
错误截图
编辑于2025-04-17
  • [武汉|结业弟子]JAVA-柯诗阳
    0

    首先看你的报错

    1.log4j:WARN No appenders could be found for logger (srevice. PersonDaoImpl).

    没有找到log4j程序,也就是说你的配置文件没有生效

    2.log4j:WARN Please initialize the log4j system properly. 

    log4j:WARN请正确初始化log4j系统。


    解决方法:

    1.重新配置log4j文件

    注意后缀是log4j.properties

    2.在程序中加入

    # Configure logging for testing: optionally with log file
    log4j.rootLogger=WARN, stdout
    # log4j.rootLogger=WARN, stdout, logfile

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

    log4j.appender.logfile=org.apache.log4j.FileAppender
    log4j.appender.logfile.File=target/spring.log
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

    3.使用log4j2

    log4j现在已经被抛弃了,推荐使用log4j2,不要死磕


    附上我的log4j.properties

    ###设置输出的等级为debug,低于debug就不会输出了###
    ###日志输出到三个地方,stdout,D,E 下面的配置文件与之对应
    log4j.rootLogger = debug,stdout,D,E

    ###第一个地方stdout,输出信息到控制台###
    ###ConsoleAppender的源码翻译是###
    ###ConsoleAppender使用用户指定的布局将日志事件附加到
    ###<code>System.out </ code>或<code> System.err </ code>。###
    ###  默认目标是<code> System.out </ code>。###
    log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    ###指定输出目标###
    log4j.appender.stdout.Target = System.out
    ###指定布局模式###
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    ###%c 输出日志信息所属的类的全名###
    ### %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28###
    ### %f 输出日志信息所属的类的类名###
    ### %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行###
    ### %m 输出代码中指定的信息,如log(message)中的message###
    ### %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”###
    ### %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推###
    ### %r 输出自应用启动到输出该日志信息所耗费的毫秒数###
    ### %t 输出产生该日志事件的线程名###
    ###所以这里的对应的意思就是 - [%宽度是5的优先等级] %时间{年-月-日 时-分-秒-毫秒} method:%日志发生位置%换行%指定信息%换行符###
    log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

    ### 第二个地方D,输出DEBUG 级别以上的日志到=E://logs/error.log ###
    log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    ###指定位置###
    log4j.appender.D.File = E://logs/log.log
    ###Log4j默认是不断的把日志内容追加到日志文件;###
    ###这里就有个属性 Append 默认就是true;###
    ###假如我们设置成false 就不追加了 直接覆盖前面的内容;###
    log4j.appender.D.Append = true
    ###指定级别为debug以上###
    log4j.appender.D.Threshold = DEBUG
    ###指定布局模式###
    log4j.appender.D.layout = org.apache.log4j.PatternLayout
    ###所以这里的对应的意思就是 %时间{年-月-日 时-分-秒} [%线程名:%毫秒数] - [%优先级] %指定信息%换行符
    log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

    ### 第三个地方E,输出ERROR 级别以上的日志到=E://logs/error.log ###
    log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    ###指定位置###
    log4j.appender.E.File =E://logs/error.log
    log4j.appender.E.Append = true
    ###指定级别为error以上###
    log4j.appender.E.Threshold = ERROR
    ###指定布局模式###
    log4j.appender.E.layout = org.apache.log4j.PatternLayout
    ###所以这里的对应的意思就是 %时间{年-月-日 时-分-秒} [%线程名:%毫秒数] - [%优先级] %指定信息%换行符
    log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n


    编辑于2019-08-03