IDEA?更改了我的Catalina.base的值
来源:3-2 logback的配置
苦渡符
2020-11-28
老师好,关于${catalina.base}中的catalina.base 我有两个疑惑点?!
首先,我的工作环境是windows10、 idea2020–、tomcat9.0.12
其次,工程的目录结构和logback.xml和您的一致。
问题一:我指定的系统变量catalina.base和idea中启动项目所显示信息中的caselina.base出现不一致的情况,如图:
======我百度搜索并未解决,尝试解决未果一如下:
在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/java/com/imooc/o2o下测试AreaDaoTest.java 时,出现了将相关sql操作的debug信息打印在我的工程根目录下的自动生成的catalina.base_IS_UNDEFINED目录里面,如图:
其中只记录了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>
1回答
-
同学好,第一个问题,可以尝试设置一下系统的环境变量 https://www.cnblogs.com/weixinyu98/p/9822048.html,如果不行,再设置一下你指定的内置tomcat目录的Server.xml里面的catalina.base
第二个问题,
得看logback.xml里面配置的路径,咱们这里是
<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
同学可以用绝对路径来替代,
其实我觉得担心是没必要的,在项目后续实际部署的时候,日志会打到工程下面的。至于同学说日志出现的地方不一致的问题,我觉得还是配置,看看不同的日志级别输出的根目录是否一致
062020-12-03
相似问题