Spring boot 实践(日志log4J,修改端口)

来源:互联网 发布:淘宝买家信誉度是什么 编辑:程序博客网 时间:2024/06/01 23:28
入门一个新知识点,习惯性大致了解,然后整个可以跑的demo。所以这里首先上代码,先跑一通再具体看其原理相关的

源代码

  1. SampleController 类
package hello;import org.jboss.logging.Logger;/*** @author YeChunBo* @time 2017年7月23日 ** 类说明  Spring boot的一个简单应用* @EnableAutoConfiguration 用于自动配置。* 简单的说,它会根据你的pom配置(实际上应该是根据具体的依赖)来判断这是一个什么应用,并创建相应的环境。*/import org.springframework.boot.*;import org.springframework.boot.autoconfigure.*;import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;import org.springframework.stereotype.*;import org.springframework.web.bind.annotation.*;@Controller@EnableAutoConfigurationpublic class SampleController implements EmbeddedServletContainerCustomizer {    private static Logger log = Logger.getLogger(SampleController.class);    @RequestMapping("/")    @ResponseBody    String home() {        log.info("info.................................................");        log.warn("warn.................................................");        log.error("error.................................................");        return "Hello Spring Boot!!!";    }    // 请求路径:http://localhost:8080/createLdapUser?name=tom&pwd=123    @RequestMapping("/createLdapUser")    @ResponseBody    String createLdapUser(@RequestParam(value = "name", required = true, defaultValue = "ycb") String name,            @RequestParam(value = "pwd", required = false, defaultValue = "zwzx_dsj") String pwd) {        System.out.println("name: " + name + ", pwd :" + pwd);        return "Hello Spring Boot!!!";    }    // 修改访问的默认端口    public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {        configurableEmbeddedServletContainer.setPort(8003);    }    public static void main(String[] args) throws Exception {        log.info("info.......");        log.warn("warn.......");        log.error("error.......");        SpringApplication.run(SampleController.class, args);    }}

2、pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>SpringBootSimple</groupId>    <artifactId>SpringBootSimple</artifactId>    <version>0.0.1-SNAPSHOT</version>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.4.RELEASE</version>    </parent>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>            <exclusions>                <exclusion>                    <groupId>org.springframework.boot</groupId>                    <artifactId>spring-boot-starter-logging</artifactId>                </exclusion>            </exclusions>        </dependency>        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-log4j -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-log4j</artifactId>            <version>1.3.0.RELEASE</version>        </dependency>    </dependencies></project>

3、log4j.properties

### \u8bbe\u7f6e###log4j.rootLogger = INFO,stdout,D,E### \u8f93\u51fa\u4fe1\u606f\u5230\u63a7\u5236\u62ac ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n### \u8f93\u51faDEBUG \u7ea7\u522b\u4ee5\u4e0a\u7684\u65e5\u5fd7\u5230=log/message.log ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = logs/message.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = INFO  log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n### \u8f93\u51faERROR \u7ea7\u522b\u4ee5\u4e0a\u7684\u65e5\u5fd7\u5230=log/error.log ###log4j.appender.E = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.File = logs/error.log log4j.appender.E.Append = truelog4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

4、代码结构如下图
这里写图片描述

5、运行测试
直接运行,run as application便可,它会加载内置的tomcat
这里日志的输出调用了log4j,启动项目后,如果没有logs日志目录,程序会自动创建,并添加相应的日志进去。
如下便是一小部分的日志信息,message.log

2017-08-01 23:35:35  [ main:0 ] - [ INFO ]  info.......2017-08-01 23:35:35  [ main:2 ] - [ WARN ]  warn.......2017-08-01 23:35:35  [ main:2 ] - [ ERROR ]  error.......2017-08-01 23:35:36  [ main:295 ] - [ INFO ]  Starting SampleController on LAPTOP-E7JSI93O with PID 14592 (D:\javaMarSource\SpringBootSimple\target\classes started by 在屋顶唱歌 in D:\javaMarSource\SpringBootSimple)2017-08-01 23:35:36  [ main:295 ] - [ INFO ]  No active profile set, falling back to default profiles: default2017-08-01 23:35:36  [ main:320 ] - [ INFO ]  Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@27f723: startup date [Tue Aug 01 23:35:36 CST 2017]; root of context hierarchy2017-08-01 23:35:36  [ background-preinit:567 ] - [ INFO ]  HV000001: Hibernate Validator 5.3.5.Final2017-08-01 23:35:37  [ main:1527 ] - [ INFO ]  Tomcat initialized with port(s): 8003 (http)2017-08-01 23:35:37  [ localhost-startStop-1:1686 ] - [ INFO ]  Root WebApplicationContext: initialization completed in 1368 ms2017-08-01 23:35:37  [ localhost-startStop-1:1824 ] - [ INFO ]  Mapping servlet: 'dispatcherServlet' to [/]2017-08-01 23:35:37  [ localhost-startStop-1:1829 ] - [ INFO ]  Mapping filter: 'characterEncodingFilter' to: [/*]2017-08-01 23:35:37  [ localhost-startStop-1:1830 ] - [ INFO ]  Mapping filter: 'hiddenHttpMethodFilter' to: [/*]2017-08-01 23:35:37  [ localhost-startStop-1:1830 ] - [ INFO ]  Mapping filter: 'httpPutFormContentFilter' to: [/*]2017-08-01 23:35:37  [ localhost-startStop-1:1830 ] - [ INFO ]  Mapping filter: 'requestContextFilter' to: [/*]

通过web界面访问如下:
访问地址:
http://localhost:8003/

返回:
Hello Spring Boot!!!

修改默认的端口号

// 修改访问的默认端口    public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {        configurableEmbeddedServletContainer.setPort(8003);    }

注:需要实现 implements EmbeddedServletContainerCustomizer 类才会生效

修改日志输出为log4j

       <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>            <exclusions>                <exclusion>                    <groupId>org.springframework.boot</groupId>                    <artifactId>spring-boot-starter-logging</artifactId>                </exclusion>            </exclusions>        </dependency>

注意:需要将默认的 log日志控件去除spring-boot-starter-logging
并引入对就的log4j

        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-log4j</artifactId>            <version>1.3.0.RELEASE</version>        </dependency>

maven 仓库可参考如下链接

http://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-log4j/1.3.0.RELEASE

将log4j.properties 文件放到resource 目录下则可。

4、参数的传入方式

// 请求路径:http://localhost:8080/createLdapUser?name=tom&pwd=123    @RequestMapping("/createLdapUser")    @ResponseBody    String createLdapUser(@RequestParam(value = "name", required = true, defaultValue = "ycb") String name,            @RequestParam(value = "pwd", required = false, defaultValue = "zwzx_dsj") String pwd) {        System.out.println("name: " + name + ", pwd :" + pwd);        return "Hello Spring Boot!!!";    }
原创粉丝点击