log4j

MyBatis

喜欢而已 提交于 2020-04-11 17:09:48
MyBatis- 第三章 入参的类型是对象 1. 新增的参数是对象 2. 空值的处理,占位符 字段,jdbcType=VARCHAR 字符串 字段,jdbcType=DATE 日期 字段,jdbcType=INTEGER 数值 3. 插入全部值时,可以不处理空值 log4j日志记录 可以记录不同级别的日志信息,以备排错和后续信息参考 1. 配置log4j.properties配置文件,放置在根目录下 日志全局设置:log4j.rootLogger=level ,console,stdout 日志等级level: DEBUG< INFO< WARN< ERROR 从低到高 变量console - 输出到console控制台 变量stdout – 输出到本地文件 2. 添加jar包 3. 正常启动 MyBatis缓存机制 1. 一级缓存 一级缓存基于MyBatis自带的PerpetualCache,是HashMap本地缓存,作用范围为session内,当session刷新或关闭后,该session中的所有cache就被清空。 2. 二级缓存 二级缓存就是全局缓存,它超出session的范围之外,可以被所有SqlSession共享 配置步骤: 1. 在mybatis-config.xml中设置 注意顺序,在文件开始位置 2. 在Mapper.xml启用缓存功能 3.

Java Thread dump 日志分析

最后都变了- 提交于 2020-04-11 17:03:28
jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁, Deadlock(重点关注) 执行中, Runnable 等待资源, Waiting on condition(重点关注) 等待获取监视器, Waiting on monitor entry(重点关注) 暂停, Suspended 对象等待中, Object.wait() 或 TIMED_WAITING 阻塞, Blocked(重点关注) 停止, Parked 下面我们先从第一个例子开始分析,然后再列出不同线程状态的含义以及注意事项,最后再补充两个实例。 综合示范一: Waiting to lock 和 Blocked 实例如下: "RMI TCP Connection(267865)-172.16.5.25" daemon prio=10 tid=0x00007fd508371000 nid=0x55ae waiting for monitor entry [0x00007fd4f8684000] java.lang.Thread.State: BLOCKED (on object monitor) at org.apache.log4j.Category.callAppenders(Category.java:201) - waiting to lock

Log信息获取调用类和调用方法名的实现原理

大憨熊 提交于 2020-04-10 17:41:47
恰好看到关于log的讨论。想起以前调查的一个问题。整理出来,希望对大家能有所帮助。 Sun JDK 源代码下载 http://wwws.sun.com/software/communitysource/ 先注册并登录到“Sun Community Source Licensing”,然后下载J2SE(几十兆)或者J2EE(几百兆)。 Log能够把代码运行时间,类名,方法名,还有信息,全部都打印出来。 一个直观的例子,每次启动Tomcat(缺省配置)的时候。一般可以看到 Jul 9, 2004 11:22:29 AM org.apache.struts.util.PropertyMessageResources <init> INFO: Initializing, config='org.apache.webapp.admin.ApplicationResources', returnNull=true Jul 9, 2004 11:22:41 AM org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on port 8080 时间,类名,方法名,信息都打印了出来。 那么,log是如何获取调用自身的这个类和这个方法名的呢? 后面给出的代码是JDK1.4的源代码,和Log4J的源代码

Log4Net日志分类和自动维护

痞子三分冷 提交于 2020-04-09 04:15:11
背景   在程序中,我们调试运行时信息,Log4Net是一个不错的解决方案。不知道是我用的不好,用到最后反而都不想看日志了。原因是因为我n个功能使用的默认的Logger来记录日志,这样以来,所有功能记录的信息都依赖同一个配置,于是所有的信息都在一个文件中,有时候查找起来,极其不方便。   我想,能不能按照功能分类呢?如果通过配置不同的logger,然后功能根据不同的LoggerName加载Ilog实例,是可以做到。但由于这些功能的log配置差异性极小,也许仅仅就是文件名不同。于是想通过代码进行配置。 解决方案   想来这样的需求应该也算正常,但经过查找,发现在log4j中有相关的咨询,但看不懂,只能自己下载log4net的源码,看看它的运行原理。   如果我们需要通过配置不同的ILog,流程是这样的,首先要创建一个ILoggerRepository,通过它来进行日志等级的配置,和各种Appender,接着通过LogManager在ILoggerRepository获取一个Ilog对象,就可以写日志了。代码如下: public static ILog GetLogger( string repositoryName = "" ) { if ( string .IsNullOrEmpty(repositoryName)) return LogManager.GetLogger( "

Zookeeper-deploy

大城市里の小女人 提交于 2020-04-08 17:58:14
一、概述 1.1、简介 Zookeeper是一个开源的,分布式的,为分布式应用提供协调服务的Apache项目 1.2、工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化Zookeeper就将负责通知已经在Zookeeper.上注册的那些观察者做出相应的反应。 1.3、特点 1) Zookeeper: 一个领导者(Leader) ,多个跟随者(Follower) 组成的集群。 2)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。 3)全局数据一致:每个Server保存一份相同的数据副本,Client无论 连接到哪个Server,数据都是一致的。 4)更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行。 5)数据更新原子性,一次数据更新要么成功,要么失败。 6)实时性,在一定时间范围内,Client能读到最新数据。 1.4、数据结构 ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。 znode一共有4种类型:持久的(persistent)、临时的 (ephemeral)、持久有序的

Log4j Implicit String Formatting

吃可爱长大的小学妹 提交于 2020-04-08 08:48:13
问题 I am using log4j v1.2.14 for logging in my project and I am also using Java 7 String.format() to put variables in my output. Currently I am writing LOGGER.info(String.format("Your var is [%s] and you are [%s]", myVar, myVar1)); Is this really the best way to output strings? I feel that log4j should have this implemented implicitly as below: LOGGER.info("Your var is [%s] and you are [%s]", myVar, myVar1); Have I missed something? Further, are there any Java logging frameworks that support this

python 日志模块

时光总嘲笑我的痴心妄想 提交于 2020-04-07 11:21:50
之前项目中用的是工具组做的日志模块,用的久了,脑袋里就懒得思考这是如何实现的。毕竟菊厂的开发,忙成狗,不是我所负责的自然只是看看会用就行了。最近开始奋发图强,自然要好好看下基础的东西。 以前做java开发时候知道java有个log4j的日志模块,用着还不错。我在python中找到它有自己的日志模块logging,另外搜索log4python,发现简书上有人对这个评价一般,有贴出来代码和配置,所以主要还是先看python自带的。 import logging.handlers LOG_FORMAT = " %(asctime)s - [%(levelname)s] - %(message)s " # logging.basicConfig(filename="test.log", level=logging.DEBUG, format=LOG_FORMAT) my_logger = logging.getLogger( " my_loger " ) my_logger.setLevel(logging.DEBUG) console_handler = logging.StreamHandler() log_format = logging.Formatter(LOG_FORMAT) console_handler.setFormatter(log_format) file

mybatis整合不输出日志问题

这一生的挚爱 提交于 2020-04-07 08:36:03
最近整合ssm框架时,整合log4j时,控制台不输出sql语句。查看log4j.properties的配置文件,确定没问题后,各处查资料,查找解决办法。最终在一篇博客里找到解决办法,博客地址(目前忘记了)找到后再一并贴出。 解决办法:web.xml中添加配置: <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/properties/log4j.properties</param-value> </context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>60000</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> 注意:此段代码应放在最前面,在开启监听之前。 如下图所示: 重启项目后,可以看到控制台打印的sql,如下图: 就此完美解决控制台输出问题。至于原因,有空深究。 附带:log4j.properties配置文件 log4j

python 日志模块

守給你的承諾、 提交于 2020-04-07 07:37:07
之前项目中用的是工具组做的日志模块,用的久了,脑袋里就懒得思考这是如何实现的。毕竟菊厂的开发,忙成狗,不是我所负责的自然只是看看会用就行了。最近开始奋发图强,自然要好好看下基础的东西。 以前做java开发时候知道java有个log4j的日志模块,用着还不错。我在python中找到它有自己的日志模块logging,另外搜索log4python,发现简书上有人对这个评价一般,有贴出来代码和配置,所以主要还是先看python自带的。 import logging.handlers LOG_FORMAT = " %(asctime)s - [%(levelname)s] - %(message)s " # logging.basicConfig(filename="test.log", level=logging.DEBUG, format=LOG_FORMAT) my_logger = logging.getLogger( " my_loger " ) my_logger.setLevel(logging.DEBUG) console_handler = logging.StreamHandler() log_format = logging.Formatter(LOG_FORMAT) console_handler.setFormatter(log_format) file

你不知道的System.out.println()

痞子三分冷 提交于 2020-04-06 22:01:19
这篇博客是为了解释System.out.println是什么以及它的工作原理。 什么是System.out.println() System.out.println是一个Java语句,一般情况下是将传递的参数,打印到控制台。 System - 是 java.lang包中的一个 final类 。根据javadoc,“ java.lang.System 该类提供的设施包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 一种加载文件和库的方法; 以及用于快速复制数组等一部分的实用方法... “ out - 是System类的 静态成员 字 段 ,类型为PrintStream。 public static final PrintStream out 他在启动时就会被实例化,并与主机的标准输出控制台进行映射。该流在实例化之后立即打开,并准备接受数据。 println - 是PrintStream类的一个 方法 。println打印(参数内容+换行符) 到控制台。PrintStream类中有多个重载的println方法。 每个println是通过调用print方法并添加一个换行符实现的。print方法是通过调用write方法实现的 System.out.println() 结构图 以下是JDK源中System.out.println的骨架结构,和代码片段。 UML图