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回答

翔仔

2020-11-29

同学好,第一个问题,可以尝试设置一下系统的环境变量 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

同学可以用绝对路径来替代,

其实我觉得担心是没必要的,在项目后续实际部署的时候,日志会打到工程下面的。至于同学说日志出现的地方不一致的问题,我觉得还是配置,看看不同的日志级别输出的根目录是否一致

0
6
翔仔
回复
苦渡符
不是呢,${log.filePath}/erorr.log 像这个 改成 D:/xxx/xxx/error.log 这样ut和项目工程运行的时候,日志都会固定输出在D:/xxx/xxx/下面了。 但是确实没必要D:/xxx/xxx/这样去按照绝对路径去写,因为实际执行的时候,同学的项目会被打成war包发布到tomcat目录下,在tomcat目录下都会在固定的位置输出日志的
2020-12-03
共6条回复

Java双版本(SSM到SpringBoot)校园商铺全栈开发

SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需

5113 学习 · 8144 问题

查看课程