log4j

log4j日志打印级别动态调整

人走茶凉 提交于 2020-08-05 20:26:29
1,为什么日志打印级别要动态调整?   随着项目越来越大,访问量也越来越高,遇到问题时想要排查,可是日志一打开却刷的太快太快,不好排查问题,有的时候甚至因为短时间打印日志太多,严重影响了性能,这个时候日志的打印级别的动态调整就相当有必要了,在不重启项目的情况,不改动代码的情况下,通过Apollo动态配置就可以通过配置动态的调整日志的级别,可以精确到配置具体的类的日志打印级别。 2,动态调整的方案   大致思路为在springboot项目启动之后,读取Apollo配置文件里的配置文件,总共有两个,一个是总的日志级别,一个是单独的类的配置,然后设置总的之后再设置具体到类的自定义的,同时注册一个监听器监听两个文件的变化,一旦有变化就重新设置一遍,是不是很简单呢?   在项目中使用日志的方式请统一使用Slf4j门面模式。具体代码如下,将该类在启动时注册入spring容器就行。值得注意的是该类中的initCustomClass()方法,该方法是因为有很多类在springboot启动时没有初始化,那么也就没有注册入LoggerContext的属性中,所以是无法设置的,通过手动初始化该类的形式来初始化之后重新设置一遍。在详细的配置文件中是支持正则表达式来匹配的。 @Service @Slf4j public class LoggerConfiguration implements

Log4j2 配置日志级别

☆樱花仙子☆ 提交于 2020-08-05 07:07:12
项目中日志输出过多也会影响磁盘的存储,下面简单整理下项目日志级别配置 1、首先日志级别如下 <!-- 日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> 2、配置过滤日志级别 我使用的是:匹配 INFO 级别以及以上级别,不匹配 INFO 级别以下级别,即: 匹配 >= INFO 的级别日志 <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" /> 属性介绍: onMatch="ACCEPT" 表示匹配该级别及以上 onMatch="DENY" 表示不匹配该级别及以上 onMatch="NEUTRAL" 表示该级别及以上的,由下一个filter处理,如果当前是最后一个,则表示匹配该级别及以上 onMismatch="ACCEPT" 表示匹配该级别以下 onMismatch="NEUTRAL" 表示该级别及以下的,由下一个filter处理,如果当前是最后一个,则不匹配该级别以下的 onMismatch="DENY" 表示不匹配该级别以下的 来源: oschina 链接: https://my.oschina.net/hp2017/blog/4454890

多线程优化函数中包含多个HTTP接口响应速度慢的问题

一个人想着一个人 提交于 2020-08-05 02:47:04
多线程优化函数中包含多个HTTP接口响应速度慢的问题 大型企业使用的系统越来越多,使用统一的集成门户做为入口,并以系统为单位注册新闻,待办任务,预警消息等插件 在使用过程中因网络或者接口的原因导致响应的时间增长,比如在加载我的待办任务的时候可能需要门户分别向A,B,C,D等系统分别请求各自的待办任务并组合返回前端; 多线程工具类,解决多线程返回值的问题 问:实现多线程的方式有几种? 答:实际上是有3种 0:继承Thread类 1:实现Runable 接口 不带返回值 1:实现Callable 接口 带返回值 问 : 启动线程的方式 答 : 0 : 直接启动一个Thread线程 new Thread (). start (); ​ 1 : 启动一个Runable Runnable runable = new Runnable () { @Override public void run () { System . out . println ( "thread run ...." ); } }; new Thread ( runable ). start (); 2 : 启动一个Callable Callable call = new Callable < Object > () { @Override public Object call () throws Exception {

mybatis当传入数据类型为Int时并且值为0时,会判断为空字符串

心不动则不痛 提交于 2020-08-05 00:03:21
一个小bug,不过可以调一下mybatis的逻辑,首先加日志打印一下mybatis的日志 log4j2.xml,日志输出有点儿多 <?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </appenders> <loggers> <logger name="log4j.logger.noModule" level="fatal" additivity="false"> <appender-ref ref="Console"/> </logger> <logger name="log4j.logger.org.mybatis.jpetstore" level="trace" additivity="false"> <appender-ref ref="Console"/> </logger> <logger name="log4j.logger.com.opensymphony.xwork2" level=

shiro的认证、授权、会话、加密

北战南征 提交于 2020-08-04 17:50:05
shiro shiro是一个基于java的开源的安全管理框架,可以完成认证,授权,会话管理,加密,缓存功能。 为什么学习shiro 在java的世界中,安全管理框架有spring security和shiro。spring security主要依赖于spring,并且比较复杂,学习曲线较高。shiro比较简单,而且其比较独立,既可以javaSE中使用,也可以在javaEE中使用,并且在分布式集群的环境下也可以使用。 shiro的结构体系 Authentication认证:验证用户是否合法。==>就是验证登录; Authorization授权:授予谁具有访问某些资源的权限; SessionManagement:会话管理,用户登录后的用户信息通过SessionManagent进行管理,不管是在什么应用中 Cryphography:提供了一些常见的加密算法,使得在应用中可以很方便的实现数据安全。 WebSupport:提供web应用程序支持 Caching缓存:提供了对缓存的支持,支持多种缓存架构:如ehcache,还支持缓存数据库-redis Concurrency:支持多线程并发访问 Testing:测试 Run As:支持一个用户在允许的前提下使用另一个身份进行登录; RememberMe:记住我 Subject=身份+凭证====>用户名和密码【用户获取主体的信息

Log4j2 not working in WebLogic 12.2.1

二次信任 提交于 2020-08-03 03:59:50
问题 I am trying to add log4j logging in my web services running under WebLogic 12.2.1 but somehow the logging is not working. This is log4j2.xml in WEB-INF\classes of my WAR file: <?xml version="1.0" encoding="UTF-8"?> <Configuration status="DEBUG"> <Properties> <Property name="log-path">E:/MLM/MyDomain/servers/MyAppSrv01/logs</Property> </Properties> <Appender type="File" name="File" fileName="${log-path}/Services.log" filePattern="${log-path}/Services-%d{yyyy-MM-dd}.log"> <Layout type=

spring boot 学习(六)spring boot 各版本中使用 log4j2 记录日志

房东的猫 提交于 2020-07-28 19:58:32
spring boot 各版本中使用 log4j2 记录日志 前言 Spring Boot中默认日志工具是 logback ,只不过我不太喜欢 logback 。为了更好支持 spring boot 框架,我使用 log4j 。 spring boot 各版本与 log4j 的支持情况 1. spring boot 1.2.X 版本 spring boot 1.2.X 版本一般建议使用默认日志工具(logback),也可以使用 log4j。 但,注意的是: Spring Boot 1.2.4.RELEASE 包含一个bug, github上关于该问题的解释 。所以,当你通过 application.properties 定义日志级别时,该错误会更改父记录器级别,在最差情况下会更改根记录器级别。虽然这个bug是修复在 1.2.6.RELEASE ,我建议至少使用 1.2.8.RELEASE (如果你想坚持1.2.x)。 因为 spring boot 现在仍然在快速发展阶段,版本更新较快,有时候就会因为版本问题而出现各种奇奇怪怪的bug。 2. spring boot 1.3.X 版本 spring boot 从 1.3.X 版本开始支持 slf4j + log4j/log4j2 。 * 首先,先解决为什么使用 SL4J Facade? 对于这个问题,网上已经有许多精彩地点答案了

Maven-dependencyManagement 用法

耗尽温柔 提交于 2020-07-28 19:33:12
DepencyManagement应用场景 当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理 构建、文档、报告、依赖、scms、发布、分发 的方法。可以方便的 编译代码、进行依赖管理、管理二进制库 等等。 由于我们的模块很多,所以我们又抽象了一层,如下图抽出一个 femicro 来管理子项目的公共的依赖。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。 在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。 父类POM配置 继承自springboot-parent 本项目中,父类POM中dependencyManagement配置 <!--依赖管理,用于管理spring-cloud的依赖--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId>

在IntelliJ IDEA中创建和运行java/scala/spark程序

旧城冷巷雨未停 提交于 2020-07-28 19:00:33
本文将分两部分来介绍如何在IntelliJ IDEA中运行Java/Scala/Spark程序: 基本概念介绍 在IntelliJ IDEA中创建和运行java/scala/spark程序 基本概念介绍 IntelliJ IDEA 本文使用版本为: ideaIC-2020.1 IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等,免费版只支持Java,Scala等少数语言。如果只开发Java和Scala,去官网下载社区版即可: https://www.jetbrains.com/idea/ . Java 本文使用版本为:java 8 编程语言,不解释。在IDE之外运行Java程序的方式如下: javac HelloWord.java // 先编译源码 ---->java HelloWord.class java.exe HelloWord // 直接运行 实际开发中每个java程序都会依赖其他的包,也就是jar,这种情况你必须告诉java.exe 你的jar包都在哪里,告诉java的方式就是通过classpath指定,通常我们都会在系统环境变量中建立一个CLASSPATH的环境变量,这样java会在这里寻找你程序依赖的包

Flink 与 Hive 的磨合期

匆匆过客 提交于 2020-07-28 17:48:18
有不少读者反馈,参考上篇文章《 Hive 终于等来了 Flink 》部署 Flink 并集成 Hive 时,出现一些 bug 以及兼容性等问题。虽已等来,却未可用。所以笔者增加了这一篇文章,作为姊妹篇。 回顾 在上篇文章中,笔者使用的 CDH 版本为 5.16.2,其中 Hive 版本为 1.1.0(CDH 5.x 系列 Hive 版本都不高于 1.1.0,是不是不可理解),Flink 源代码本身对 Hive 1.1.0 版本兼容性不好,存在不少问题。为了兼容目前版本,笔者基于 CDH 5.16.2 环境,对 Flink 代码进行了修改,重新打包并部署。 其实经过很多开源项目的实战,比如 Apache Atlas,Apache Spark 等,Hive 1.2.x 和 Hive 1.1.x 在大部分情况下,替换一些 Jar 包,是可以解决兼容性的问题。对于笔者的环境来说,可以使用 Hive 1.2.1 版本的一些 Jar 包来代替 Hive 1.1.0 版本的 Jar 包。在本篇文章的开始部分,笔者会解决这个问题,然后再补充上篇文章缺少的实战内容。 剪不断理还乱的问题 根据读者的反馈,笔者将所有的问题总结为三类: Flink 如何连接 Hive 除了 API 外,有没有类似 spark-sql 命令 识别不到 Hadoop 环境或配置文件找不到 依赖包、类或方法找不到 1.