老师好,关于${catalina.base}中的catalina.base 我有两个疑惑点?!
首先,我的工作环境是windows10、 idea2020–、tomcat9.0.12
其次,工程的目录结构和logback.xml和您的一致。
======我百度搜索并未解决,尝试解决未果一如下:
在idea菜单项 run->edit configuration下指定VM 的键值对 -Dcatalina.base=“E:\Tomcat\tomcat-9.0.12\apache-tomcat-9.0.12”
======尝试接受…该种结果,
通过软链接,将idea指定的目录链接到我的其他盘。即将当前用户AppData\Local下JetBrains转移到目标磁盘目录下,cmd进入当前用户AppData\Local下,执行命令该命令(百度的,只是为了不占C盘空间…):
mklink /J "JetBrains" "D:\DevIde\IntelliJIDEA\JetBrains"
======最后
我希望按我配置的catalina.base的路径来指定工作区间,。还是我理解错了?它本来就是如此~~别扭?
其中只记录了test JUNIT单元测试的sql操作的debug信息。而从浏览器中通过url产生的日志信息并未保存在此,而是j继续保存在idea替换的catalina.base 的路径下,如问题一所示。
迷惑-------
迷惑-----
迷惑—
logback.xml中 的name属性不是表示该logger监听当前工程com.immoc.o2o下产生的日志信息吗?并且为何日志的输出位置是项目的根目录下。
======最后
我不清楚为何会出现这种情况,并且我担心这些日志会因为项目的重复部署而消失,我希望它们和我在logback.xml下配置的路径一致从而得以保存起来,虽然它们的价值并不高。
非常感谢老师百忙抽空相助于我,额,希望我表述清楚了…
慕课的编辑器好难啊…
logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- scan="true" scanPeriod="60 seconds" : 表示定期扫描日志主机的配置信息是否有变化,并且加载进来 -->
<!-- debug=false : 表示告诉logback不要去输出logback组件的相关信息-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 定义参数常量 -->
<!-- TRACE<DEBUG<INFO<WARN<ERROR -->
<!-- logger.trace("msg") logger.debug... -->
<property name="log.level" value="debug" />
<property name="log.maxHistory" value="30" />
<!-- ${catalina.base}:catalina.base是tomcat的环境变量,即工作目录,指向每个Tomcat目录私有信息的位置,
就是conf、logs、temp、webapps和work的父目录。 -->
<property name="log.filePath" value="${catalina.base}/logs/webapps" />
<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">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- DEBUG -->
<appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<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>
<!-- 将日志信息转化为字符串,并且以${log.pattern}定义好的格式,输出到我们指定的日志文件 -->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 用来过滤非level指定的级别的信息。即该appender指定的日志输出文件,记录的是level指定的级别的日志信息 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- INFO -->
<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<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>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- ERROR -->
<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>${log.filePath}/erorr.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>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 创建一个日志记录器对象,并将上面定义的三个日志输出对象appender与其进行绑定 -->
<!-- name : 表示该logger监听当前工程com.imooc.o2o下产生的日志信息 -->
<!-- additivity:当设置为true时,会继承<root>下绑定的日志输出对象,如这里的控制台日志输出对象,并且输出级别是按当期的logger的level来(覆盖了root的) -->
<logger name="com.imooc.o2o" level="${log.level}" additivity="true">
<appender-ref ref="debugAppender"/>
<appender-ref ref="infoAppender"/>
<appender-ref ref="errorAppender"/>
</logger>
<!-- <root> : 特殊的logger,根logger。当子logger没有指定level时,子logger使用root的level指定的级别及更高级别的日志-->
<root level="info">
<appender-ref ref="consoleAppender"/>
</root>
</configuration>
SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需
了解课程