logback 生成 catalina.base_IS_UNDEFINED 问题处理 &如何在eclipse/idea中添加VM参数
1>在Eclipse中里设置 windows->preferences->Java->Installed JRES->edit->Default VM Arguments 在文本框中输入 -Dcatalina.base=d:/logs
2>在IDEA的run->configurations里设置 >> vm options 在文本框中输入 -Dcatalina.base=d:/logs
_________________________________________________________________________________________
关于Log4j日志相对路径的配置请看:
log4j 产生的日志位置设置 和 catalina.home、catalina.base .
由于我们在Log4j的配置中引入了系统属性${catalina.base},下面讲一下如何设置catalina.base,本质上就是在启动Tomcat的时候,给启动命令或脚本增加参数:
可以参考:操作系统的环境变量和Java系统属性
1.第三方Tomcat
- 在Tomcat安装路径/bin下面的catalina.bat或者相关的几个bat文件里面,
- 就有 CATALINA_BASE 属性的设置,当然还有JAVA_HOME等几个属性的设置。
- 这些环境变量,在JVM启动的时候,都会被转换成 系统属性(键值对的形式保存)。
- 可以在脚本文件里相应的地方增加自己需要的参数。
2.Springboot内置Tomcat
1>在Eclipse中里设置 windows->preferences->Java->Installed JRES->edit->Default VM Arguments 在文本框中输入
-Dcatalina.base=d:/logs
2>在IDEA的run->configurations里设置,看图
用Maven启动项目时,在需要在命令行命令后加上 -Dcatalina.base="你的路径"。
springboot中将日志信息存放在catalina.base中

- <?xml version="1.0" encoding="UTF-8"?>
- <configuration debug="true">
- <!-- 项目名称 -->
- <property name="PROJECT_NAME" value="springBootTemplate" />
- <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
- <property name="LOG_HOME" value="${catalina.base}/logs" />
- <!-- 控制台输出 -->
- <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
- <withJansi>true</withJansi>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
- <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %highlight([%-5level] %logger{50} - %msg%n)</pattern>
- <charset>UTF-8</charset>
- </encoder>
- </appender>
- <!-- 系统错误日志文件 -->
- <appender name="SYSTEM_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <!-- 过滤器,只打印ERROR级别的日志 -->
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <level>ERROR</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
- <!--日志文件输出的文件名-->
- <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}.system_error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
- <!--日志文件保留天数-->
- <MaxHistory>15</MaxHistory>
- <!--日志文件最大的大小-->
- <MaxFileSize>10MB</MaxFileSize>
- </rollingPolicy>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
- <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern>
- <charset>UTF-8</charset>
- </encoder>
- </appender>
- <logger name="system_error" additivity="true">
- <appender-ref ref="SYSTEM_FILE"/>
- </logger>
- <!-- 自己打印的日志文件,用于记录重要日志信息 -->
- <appender name="MY_INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <!-- 过滤器,只打印ERROR级别的日志 -->
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <level>INFO</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
- <!--日志文件输出的文件名-->
- <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}.my_info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
- <!--日志文件保留天数-->
- <MaxHistory>15</MaxHistory>
- <!--日志文件最大的大小-->
- <MaxFileSize>10MB</MaxFileSize>
- </rollingPolicy>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
- <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern>
- <charset>UTF-8</charset>
- </encoder>
- </appender>
- <logger name="my_info" additivity="true">
- <appender-ref ref="MY_INFO_FILE"/>
- </logger>
- <!-- 开发环境下的日志配置 -->
- <springProfile name="dev">
- <root level="INFO">
- <appender-ref ref="CONSOLE" />
- <appender-ref ref="SYSTEM_FILE" />
- </root>
- </springProfile>
- <!-- 生产环境下的日志配置 -->
- <springProfile name="prod">
- <root level="INFO">
- <appender-ref ref="SYSTEM_FILE" />
- </root>
- </springProfile>
- </configuration>

SpringBoot项目中在官方文档中说明,默认已经依赖了一些日志框架,而其中推荐使用的就是Logback,SpringBoot已经依赖了Logback所以不需要手动添加依赖。
如何配置
1、在resources目录下新建logback-spring.xml
只要你的名字是logback-spring.xml的话SpringBoot会自动识别和读取它的,所以你就不需要在application.yml进行其他的配置了。
配置文件具体如下:
同样的logback这里的配置文件也会读取相应的配置,比如你使用dev那么就会读取dev下的配置,如果你使用prod就会使用prod下的配置。
也就是说等到项目需要上线的时候,你只需修改springBoot的配置文件就可以了,不需要对logback进行修改,就可以实现在生产环境下和开发环境下打印不同的日志级别
在控制台打印的信息经过处理显示的颜色会有不同的区分,很容易发现问题。
还有是日志文件的分类
通过工具类会分离打印的日志
将需要的重要日志信息打印在my_info文件中去,而重要的错误信息存放在system_error文件中。
logback 生成 catalina.base_IS_UNDEFINED 问题处理 &如何在eclipse/idea中添加VM参数的更多相关文章
- 如何在eclipse jee中创建Maven project并且转换为Dynamic web project
如何在eclipse jee中创建Maven project并且转换为Dynamic web project 注意:该文档只针对以下eclipse版本,如图 为了方便,我将我本地的压缩包放在了微云网盘 ...
- 如何在VUE项目中添加ESLint
如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...
- 如何在Android Studio中添加注释模板信息?
如何在Android Studio中添加注释模板信息? 在开发程序的时候,我们一般都会给文件自动添加上一些关于文件的注释信息,比如开发者的名字,开发的时间,开发者的联系方式等等.那么在android ...
- 文章翻译:ABP如何在EF core中添加数据过滤器
原文地址:https://aspnetboilerplate.com/Pages/Documents/Articles%5CHow-To%5Cadd-custom-data-filter-ef-cor ...
- 你竟然在公钥中下毒!——如何在RSA公钥中添加后门
原文:http://www.hackdig.com/?01/hack-17893.htm 分享到: 当我知道它是如何运行时,我惊得下巴都掉了.这是一个非常简单的手法,但这篇文章会颠覆你之前对RSA的看 ...
- rails中如何在a标签中添加其他标签
最近在用rails写一个项目练练手,然后遇到了一个问题,就是用 <% link_to("首页", root_path) %> 生成一个a标签,之后就在想我怎么在这个a标 ...
- 如何在select下拉列表中添加复选框?
近来在给一个公司做考试系统的项目,遇到的问题不少,但其中的几个让我对表单的使用颇为感兴趣,前端程序员都知道,下拉列表有select标签,复选框有checkbox,但是两者合在一起却少有人去研究,当时接 ...
- 如何在RCP程序中添加一个banner栏
前言:这段时间还算比较空闲,我准备把过去做过的有些形形色色,甚至有些奇怪的研究总结一下,也许刚好有人用的着也不一定,不枉为之抓耳挠腮的时光和浪费的电力.以前有个客户提出要在RCP程序中添加一个bann ...
- 如何在Android Studio中添加RecyclerView-v7支持包
1.打开SDK Manager,在Extras树下找到Android Support Library,下载好支持包.RecyclerView在v7-21版本就出来了.我这里不用更新了,说明是最新的,怎 ...
随机推荐
- 读入优化&输出优化
读入优化 int read() { ; ') ; '; ') num=num*+c-'; return ff*num; } 输出优化 void write(int x) { ) { putchar(' ...
- mongodb启动命令与端口设置
一.mongodb安装和配置 1.创建tools目录,用于存放安装包 cd /usr/local mkdir -p tools cd tools 2.下载mongodb包(其它版本请自行下载) wge ...
- server2003 IIS6.0 网站不可用
事件 ID ( 487 )的描述(在资源( Zend Optimizer )中)无法找到.本地计算机可能没有必要的注册信息或消息 DLL 文件来从远程计算机显示消息.您可能可以使用 /AUXSOURC ...
- AdaptIS: Adaptive Instance Selection Network
AdaptIS: Adaptive Instance Selection Network 2019-09-19 12:58:07 Paper: https://arxiv.org/pdf/1909.0 ...
- el-cascader遇到一个坑的问题
经仔细分析,如果二级和三级的value一样,就会出现这个问题.
- http使用formData方式传输文件请求
转载请注明出处: 项目中有遇到http使用formData请求传输文件,在此记录一下 1.依赖jar包: <dependency> <groupId>org.apache.ht ...
- leetcode 266.Palindrome Permutation 、267.Palindrome Permutation II
266.Palindrome Permutation https://www.cnblogs.com/grandyang/p/5223238.html 判断一个字符串的全排列能否形成一个回文串. 能组 ...
- Linux虚拟内存的作用
要深入了解linux内存运行机制,需要知道下面提到的几个方面:首先,Linux系统会不时的进行页面交换操作,以保持尽可能多的空闲物理内存,即使并没有什么事情需要内存,Linux也会交换出暂时不用的内存 ...
- 【环境搭建与软件安装】windows系统基于Anaconda安装tensorflow-gpu
https://github.com/tensorflow/tensorflow/issues/21832 原来是tensorflow-gpu-1.10.0,准备改为1.9.0试试,同样的问题: 应该 ...
- k8s Pod 扩容和缩容
在生产环境下,在面临服务需要扩容的场景时,可以使用Deployment/RC的Scale机制来实现.Kubernetes支持对Pod的手动扩容和自动扩容. 手动扩容缩容 通过执行扩容命令,对某个dep ...