日志-springboot logback jpa集成
resources下新建 logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="300 seconds"> <springProperty scop="context" name="fluentHost" source="myapp.fluentd.host" defaultValue="localhost"/> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 开发环境 --> <springProfile name="dev"> <!-- 日志文件生成位置 --> <fileNamePattern>F:\log\log.%d{yyyy-MM-dd}.txt</fileNamePattern> </springProfile> <!-- 测试环境 --> <springProfile name="staging"> <fileNamePattern>F:\log\log.%d{yyyy-MM-dd}.txt</fileNamePattern> </springProfile> <!-- 线上环境 --> <springProfile name="prod"> <fileNamePattern>/logs/prod/myconfig.%d{yyyy-MM-dd}.log</fileNamePattern> </springProfile>
<!-- 保存30天的历史日志 --> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>${fluentHost} %d{yyyy-MM-dd HH:mm:ss}: %p [%t] %c{1} %F:%L - %m%n</pattern> </encoder> </appender> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${fluentHost} %d{yyyy-MM-dd HH:mm:ss}: %p [%t] %c{1} %F:%L - %m%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="file" /> <appender-ref ref="stdout" /> </root> <!-- 1. 输出SQL 到控制台和文件--> <logger name="org.hibernate.SQL" additivity="false" > <level value="DEBUG" /> <appender-ref ref="file" /> <appender-ref ref="stdout" /> </logger> <!-- 2. 输出SQL 的参数到控制台和文件--> <logger name="org.hibernate.type.descriptor.sql.BasicBinder" additivity="false" level="TRACE" > <level value="TRACE" /> <appender-ref ref="file" /> <appender-ref ref="stdout" /> </logger> </configuration>
application.properties中加入
# SQL 日志 spring.jpa.properties.hibernate.format_sql=true spring.jpa.show-sql=true # 日志等级:dev spring.profiles.active=dev # 日志文件 配置 logging.config=classpath:logback-spring.xml
***Controller.java中加入注解@Slf4j
@Slf4j @RestController public class EmpController { @Autowired private EmpDao empDao; @RequestMapping("/empShow") public Emp empShow() { log.info("EmpController.empShow start"); Emp emp = empDao.findEmpByEmpno(1); log.info("EmpController.empShow end"); return emp; } }
运行springboot项目,访问配置了@Slf4j的接口
生成了日志文件
日志文件内容 ↓
localhost 2022-02-15 14:28:35: INFO [main] c.j.StartApp StartupInfoLogger.java:55 - Starting StartApp using Java 1.8.0_221 on USER-20190727CS with PID 11932 (D:\git_repository\springBootT\target\classes started by Administrator in D:\git_repository\springBootT) localhost 2022-02-15 14:28:35: INFO [main] c.j.StartApp SpringApplication.java:674 - The following profiles are active: dev localhost 2022-02-15 14:28:36: INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate RepositoryConfigurationDelegate.java:132 - Bootstrapping Spring Data JPA repositories in DEFAULT mode. localhost 2022-02-15 14:28:36: INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate RepositoryConfigurationDelegate.java:201 - Finished Spring Data repository scanning in 67 ms. Found 1 JPA repository interfaces. localhost 2022-02-15 14:28:37: INFO [main] o.s.b.w.e.t.TomcatWebServer TomcatWebServer.java:108 - Tomcat initialized with port(s): 8088 (http) localhost 2022-02-15 14:28:37: INFO [main] o.a.c.h.Http11NioProtocol DirectJDKLog.java:173 - Initializing ProtocolHandler ["http-nio-8088"] localhost 2022-02-15 14:28:37: INFO [main] o.a.c.c.StandardService DirectJDKLog.java:173 - Starting service [Tomcat] localhost 2022-02-15 14:28:37: INFO [main] o.a.c.c.StandardEngine DirectJDKLog.java:173 - Starting Servlet engine: [Apache Tomcat/9.0.56] localhost 2022-02-15 14:28:37: INFO [main] o.a.c.c.C.[.[.[/] DirectJDKLog.java:173 - Initializing Spring embedded WebApplicationContext localhost 2022-02-15 14:28:37: INFO [main] o.s.b.w.s.c.ServletWebServerApplicationContext ServletWebServerApplicationContext.java:290 - Root WebApplicationContext: initialization completed in 1851 ms localhost 2022-02-15 14:28:37: INFO [main] o.h.j.i.u.LogHelper LogHelper.java:31 - HHH000204: Processing PersistenceUnitInfo [name: default] localhost 2022-02-15 14:28:37: INFO [main] o.h.Version Version.java:44 - HHH000412: Hibernate ORM core version 5.4.33 localhost 2022-02-15 14:28:37: INFO [main] o.h.a.c.Version JavaReflectionManager.java:56 - HCANN000001: Hibernate Commons Annotations {5.1.2.Final} localhost 2022-02-15 14:28:38: INFO [main] c.z.h.HikariDataSource HikariDataSource.java:110 - HikariPool-1 - Starting... localhost 2022-02-15 14:28:38: INFO [main] c.z.h.HikariDataSource HikariDataSource.java:123 - HikariPool-1 - Start completed. localhost 2022-02-15 14:28:38: INFO [main] o.h.d.Dialect Dialect.java:175 - HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect localhost 2022-02-15 14:28:39: INFO [main] o.h.e.t.j.p.i.JtaPlatformInitiator JtaPlatformInitiator.java:52 - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] localhost 2022-02-15 14:28:39: INFO [main] o.s.o.j.LocalContainerEntityManagerFactoryBean AbstractEntityManagerFactoryBean.java:437 - Initialized JPA EntityManagerFactory for persistence unit 'default' localhost 2022-02-15 14:28:39: WARN [main] o.s.b.a.o.j.JpaBaseConfiguration$JpaWebConfiguration JpaBaseConfiguration.java:219 - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning localhost 2022-02-15 14:28:40: INFO [main] o.a.c.h.Http11NioProtocol DirectJDKLog.java:173 - Starting ProtocolHandler ["http-nio-8088"] localhost 2022-02-15 14:28:40: INFO [main] o.s.b.w.e.t.TomcatWebServer TomcatWebServer.java:220 - Tomcat started on port(s): 8088 (http) with context path '' localhost 2022-02-15 14:28:40: INFO [main] c.j.StartApp StartupInfoLogger.java:61 - Started StartApp in 5.821 seconds (JVM running for 7.447) localhost 2022-02-15 14:28:45: INFO [http-nio-8088-exec-1] o.a.c.c.C.[.[.[/] DirectJDKLog.java:173 - Initializing Spring DispatcherServlet 'dispatcherServlet' localhost 2022-02-15 14:28:45: INFO [http-nio-8088-exec-1] o.s.w.s.DispatcherServlet FrameworkServlet.java:525 - Initializing Servlet 'dispatcherServlet' localhost 2022-02-15 14:28:45: INFO [http-nio-8088-exec-1] o.s.w.s.DispatcherServlet FrameworkServlet.java:547 - Completed initialization in 2 ms localhost 2022-02-15 14:28:45: INFO [http-nio-8088-exec-1] c.j.c.EmpController EmpController.java:19 - EmpController.empShow start localhost 2022-02-15 14:28:45: DEBUG [http-nio-8088-exec-1] o.h.SQL SqlStatementLogger.java:144 - SELECT empno, ename, job FROM emp WHERE empno = ( ? ) localhost 2022-02-15 14:28:45: TRACE [http-nio-8088-exec-1] o.h.t.d.s.BasicBinder BasicBinder.java:64 - binding parameter [1] as [INTEGER] - [1] localhost 2022-02-15 14:28:45: INFO [http-nio-8088-exec-1] c.j.c.EmpController EmpController.java:21 - EmpController.empShow end