- 设置tomcat 默认访问页面
在WEB-INF/web.xml配置
<!--设置默认访问路径-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
- 在创建区域实体类的时候为什么全部都使用引用类型?
原因在于,int基本类型,在创建的时候,会默认设置为0,这个是不合理的,所以使用的是引用类型
- mysql存储中文,url书写方式
jdbc.url=jdbc:mysql:///o2o?useUnicode=true&characterEncoding=utf8
-
Logback日志管理
- 一、主要模块
- logback-access
与Servlet荣威集成,通过HTTP访问日志功能 - logback-classic
log4j 改良版本
logback-core
为前两个模块提供基本功能
-
二、主要标签
- logger
存放日志对象,定义日志的类型还有级别等 - appender
用于指定日志输出的目的地,目的地可以是文件、控制台,远程套接服务器等 - layout
格式化日志信息的输出的
- logger
-
三、加载logback配置文件顺序
- logback configurationFile这个属性,使用这个属性的地址找相关的配置文件
比如:java -Dlogback.configurationFile=xxxxx/xxx.xml
- classpath里面的logback.groovy文件
- calsspath里面logback-text.xml
- classpath里面 logback.xml
- jdk1.6版本以上,调用serviceLoader 查找类叫com.qos.logback.classic.Configurator这个接口的第一个实现类
- ch.qos.logback.classic.BasicCOnfigurator 在控制台直接输出日志
- logback configurationFile这个属性,使用这个属性的地址找相关的配置文件
-
logback.xml代码
<?xml version="1.0" encoding="UTF-8"?>
<!--
1. scan,默认值为true,配置文件发生改变,将重新加载配置
2. scanPeriod,设置检测配置文件是否有修改时间的时间间隔,默认时间为毫秒 。每个N时间扫描配置文件,如有变化,重新加载配置,省的配置文件修改之后重新启动服务器了
3. debug, 值设置为true,打印logback内部信息,实时查看logback运行状态,这里就不需要使用了,logback已经很稳定了,不需要这些信息干扰我们的业务日志的信息
-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--定义参数常亮-->
<!--
日志级别: TRACE < DEBUG < INFO < WARN < ERROR
这里日志的是debug,说明只记录debug级别以上的记录 有这几个记录 DEBUG 、 INFO 、 WARN 、 ERROR 记录
-->
<property name="log.level" value="DEBUG"/>
<!--最大日志历史保留时间 设置为保存30天-->
<property name="log.maxHistory" value="30"/>
<!--日志存储的根路径 catalina.base 存储的是 tomcat 根目录-->
<property name="log.filePath" value="${catalina.base}/logs/webapps"/>
<!--日志展示格式
%d{yyyy-MM-dd HH:mm:ss.SSS}:时间格式
[%thread]: 输出那个线程执行的
%-5level: 缩进5个单位之后输出哪个级别的日志
%logger(50): 输入package里面哪个类输出的信息
%msg: 表示信息
%n: 换行符
-->
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS}[%thread] %-5level %logger(50) - %msg%n"/>
<!--输入介质,输入的地点,控制台设置-->
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<!--将event事件转换成数组,将转换后的字节输入到文件中去,言外之意,就是将转换成字符串,也输出到相应的文件中-->
<encoder>
<!--按照上面定义好的日志格式输入-->
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!--DEBUG-->
<!--文件随着size的增大会滚动出新的日志文件,或者随着时间推移按天或者按月生成新的日志文件-->
<appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--文件路径,log.filePath上面配置的日志存储的根路径-->
<file>${log.filePath}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件名称-->
<fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!--最大保存历史数量-->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<!--按照上面定义好的日志格式输入-->
<pattern>${log.pattern}</pattern>
</encoder>
<!--过滤掉不是debug level日志,值记录 debug level日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<!--只记录debug level 的日志-->
<onMatch>ACCEPT</onMatch>
<!--将不是debug level 的日志给过滤掉-->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--INFO-->
<!--文件随着size的增大会滚动出新的日志文件,或者随着时间推移按天或者按月生成新的日志文件-->
<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--文件路径,log.filePath上面配置的日志存储的根路径-->
<file>${log.filePath}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件名称-->
<fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!--最大保存历史数量-->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<!--按照上面定义好的日志格式输入-->
<pattern>${log.pattern}</pattern>
</encoder>
<!--过滤掉不是info level日志,值记录 info level日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<!--只记录info level 的日志-->
<onMatch>ACCEPT</onMatch>
<!--将不是info level 的日志给过滤掉-->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--ERROR-->
<!--文件随着size的增大会滚动出新的日志文件,或者随着时间推移按天或者按月生成新的日志文件-->
<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--文件路径,log.filePath上面配置的日志存储的根路径-->
<File>${log.filePath}/error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件名称-->
<fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!--最大保存历史数量-->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<!--按照上面定义好的日志格式输入-->
<pattern>${log.pattern}</pattern>
</encoder>
<!--过滤掉不是error level日志,值记录 error level日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<!--只记录error level 的日志-->
<onMatch>ACCEPT</onMatch>
<!--将不是error level 的日志给过滤掉-->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--存放日志对象,关注那个package下的信息 log.level这里日志的是debug,说明只记录debug级别以上的记录-->
<!--additivity 继承下面root-->
<logger name="com.xizi" level="${log.level}" additivity="true">
<!--向这三个文件输出信息-->
<appender-ref ref="debugAppender"/>
<appender-ref ref="infoAppender"/>
<appender-ref ref="errorAppender"/>
</logger>
<root level="info">
<appender-ref ref="consoleAppender"/>
</root>
</configuration>
网友评论