log4j2 eclipse导入jar包了jar包怎么还依赖1

10422人阅读
前段时间在看Gradle文章方向其比ANT、Maven真的要简单很多,特别是在下载jar依赖方面下面就是用gradle写的一个jar包依赖下载的小例子:
(1)建立build.gradle文件
(2)内容如下:
apply plugin: 'java'
repositories {
& & mavenCentral()
dependencies {
& & compile &javax.servlet:javax.servlet-api:3.1-b07&, &
& & & & & & &org.slf4j:slf4j-log4j12:1.7.5&, &
& & & & & & &org.slf4j:slf4j-jdk14:1.7.5&, &
& & & & & & &mysql:mysql-connector-java:5.1.24&&
task copyJars(type: Copy) {
& from configurations.runtime
& into 'lib' // 目标位置
(3)命令行运行:gradle copyJars
(4)lib目录下就是你需要的jar包,gradle自动会分析jar其中依赖关系一并下载
红色标记内容从哪里获得?一下是个好地方
/artifact/org.springframework/spring-core/3.2.4.RELEASE
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:609729次
积分:8723
积分:8723
排名:第909名
原创:233篇
转载:230篇
评论:108条
(5)(5)(4)(1)(4)(4)(5)(10)(8)(5)(6)(5)(7)(2)(24)(5)(2)(1)(5)(5)(7)(1)(1)(1)(5)(5)(2)(17)(1)(14)(4)(4)(1)(1)(10)(9)(7)(7)(5)(1)(5)(1)(7)(1)(3)(3)(4)(6)(3)(3)(1)(8)(6)(3)(53)(12)(2)(1)(3)(1)(1)(5)(1)(1)(1)(4)(15)(93)7969人阅读
Log4j 2 包含了基于LMAX 分离库的下一代的异步日志系统,在多线程环境下,异步日志系统比&Log4j
1.x 和Logback 提高了10倍性能提升(吞吐量和延迟率 )。原文如下:
Log4j 2 contains next-generation Asynchronous Loggers based on the LMAX Disruptor library. In multi-threaded scenarios
Asynchronous Loggers have 10 times higher throughput and orders of magnitude lower latency than Log4j 1.x and Logback.&
Log4j2目前已经出到了beta8版本,估计beta9在最近一周将放出,试用了下,感觉还不错,做如下总结!
我是从logback迁移到log4j2,
删除掉原有的包&log4j-over-slf4j-1.6.4.jar&logback-classic-1.0.7.jar&logback-core-1.0.7.jar&slf4j-api-1.6.4.jar
增添以下的包 log4j-over-slf4j-1.7.5.jar&log4j-api-2.0-beta8.jar&log4j-core-2.0-beta8.jar &log4j-slf4j-impl-2.0-beta8.jar
由于作者推荐,为了性能考虑,尽量不要使用slf4j,但我依赖的第三方框架比如spring有对slf4j使用,所以对JAR包做了以上的取舍,所以原有代码中要做如下的改动
改动前:import org.slf4j.L
& & &&import org.slf4j.LoggerF
& & &private static final Logger logger = LoggerFactory.getLogger(OOXX.class);
改动后:iimport org.apache.logging.log4j.LogM
& & &&import org.apache.logging.log4j.L
& & &private static final Logger logger = LogManager.getLogger(OOXX.class);
配置文件log4j2.xml如下:
&?xml version=&1.0& encoding=&UTF-8&?&
&!-- status=debug 可以查看log4j的装配过程 --&
&configuration status=&off& monitorInterval=&1800&&
&properties&
&property name=&LOG_HOME&&/log/fish&/property&
&!-- 日志备份目录 --&
&property name=&BACKUP_HOME&&{LOG_HOME}/backup&/property&
&property name=&STAT_NAME&&stat&/property&
&property name=&SERVER_NAME&&global&/property&
&/properties&
&appenders&
&!-- 定义控制台输出 --&
&Console name=&Console& target=&SYSTEM_OUT& follow=&true&&
&PatternLayout pattern=&%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n& /&
&/Console&
&!-- 程序员调试日志 --&
&RollingRandomAccessFile name=&DevLog& fileName=&${LOG_HOME}/${SERVER_NAME}&
filePattern=&${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log&&
&PatternLayout pattern=&%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n& /&
&Policies&
&TimeBasedTriggeringPolicy interval=&1& modulate=&true& /&
&/Policies&
&/RollingRandomAccessFile&
&!-- 游戏产品数据分析日志 --&
&RollingRandomAccessFile name=&ProductLog&
fileName=&${LOG_HOME}/${SERVER_NAME}_${STAT_NAME}&
filePattern=&${LOG_HOME}/${SERVER_NAME}_${STAT_NAME}.%d{yyyy-MM-dd-HH}.log&&
&PatternLayout
pattern=&%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n& /&
&Policies&
&TimeBasedTriggeringPolicy interval=&1&
modulate=&true& /&
&/Policies&
&/RollingRandomAccessFile&
&/appenders&
&!-- 3rdparty Loggers --&
&logger name=&org.springframework.core& level=&info&&
&logger name=&org.springframework.beans& level=&info&&
&logger name=&org.springframework.context& level=&info&&
&logger name=&org.springframework.web& level=&info&&
&logger name=&org.jboss.netty& level=&warn&&
&logger name=&org.apache.http& level=&warn&&
&logger name=&com.mchange.v2& level=&warn&&
&!-- Game Stat
logger --&
&logger name=&com.u9.global.service.log& level=&info&
additivity=&false&&
&appender-ref ref=&ProductLog& /&
&!-- Root Logger --&
&root level=&DEBUG&&
&appender-ref ref=&DevLog& /&
&appender-ref ref=&Console& /&
&/loggers&
&/configuration&
&TimeBased Triggering Policy
基于时间的触发策略。该策略主要是完成周期性的log文件封存工作。有两个参数:
interval,integer型,指定两次封存动作之间的时间间隔。单位:以日志的命名精度来确定单位,比如yyyy-MM-dd-HH 单位为小时,yyyy-MM-dd-HH-mm 单位为分钟
modulate,boolean型,说明是否对封存时间进行调制。若modulate=true,则封存时间将以0点为边界进行偏移计算。比如,modulate=true,interval=4hours,那么假设上次封存日志的时间为03:00,则下次封存日志的时间为04:00,之后的封存时间依次为08:00,12:00,16:00,。。。
存在问题:在Eclipse下一切运行正常,如果把应用打包成jar包发布后,cmd命令行模式下,即使Console开着的情况下,也没法输出,文件输出也没有任何日志。
问题已经解决,需要在MANIFEST.MF文件里Class-Path 最前加个'.',目的是让与jar包平级的配置文件log4j2.xml加载进来。
Class-Path: . lib/antlr-2.7.6.jar lib/other.jar
这样,就把包含了log4j2.xml的路径放到了classpath,因此,log4j2能读取这个文件。感谢老外Jacob Kjome的回复!
log4j2 在Web的应用,把log4j2.xml放在src根目录下,不需要任何在代码级别的设置,直接类似JAVA应用一样使用,但把servlet改成了servlet3.0,因为官网上描述如下:
The Short Story
Log4j 2 &just works& in Servlet 3.0 and newer web applications. It is capable of automatically starting when the application deploys and shutting down when the application undeploys.Important Note! For performance reasons, containers often ignore certain JARs known not to contain TLDs or ServletContainerInitializers and do not scan them for web-fragments and initializers. Importantly, Tomcat 7 &7.0.43 ignores all JAR files named log4j*.jar, which prevents this feature from working. This has been fixed in Tomcat 7.0.43, Tomcat 8, and later. In Tomcat 7 &7.0.43 you will need to change catalina.properties and remove &log4j*.jar& from the jarsToSkip property. You may need to do something similar on other containers if they skip scanning Log4j JAR files.
但发现在eclipse下servlet2.0 也可以用的,并且不用修改catalina.properties文件。我用的是apache-tomcat-7.0.42,很奇怪!
有时候,为了同一份log4j文件要支持写到不同的log中(否则会导致打印的内容被覆盖,其中一个进程写不进log等问题),需要在载入的时候对内容进行动态修改,比如根据server id分别生成game1.log,game2.log
可以代码进行加载log4文件
File file = new File(&log4j2.xml&);
BufferedInputStream in =
in = new BufferedInputStream(new FileInputStream(file));&span style=&white-space:pre&&
&/span&&strong&&span style=&color:#33cc00;&&//TODO 先进行文本修改&/span&&/strong&
final ConfigurationSource source = new ConfigurationSource();
source.setInputStream(in);
Configurator.initialize(null, source);
} catch (FileNotFoundException e) {
e.printStackTrace();
要使用异步写日志的功能,必须引入
&asyncRoot&&or&&asyncLogger&
官方建议一般程序员查看的日志改成异步方式,一些运营日志改成同步
Asynchronous Appenders
和&Asynchronous Loggers 区别:
在&/appenders& 节点里添加
& &Async name=&Async&&
& & & &AppenderRef ref=&MyFile&/&
& & &/Async&
为Asynchronous
Appenders 性能比同步快,比Asynchronous Loggers慢
在loggers节点添加
& &AsyncLogger name=&com.foo.Bar& level=&trace& includeLocation=&true&&
& & & &AppenderRef ref=&RandomAccessFile&/&
& & &/AsyncLogger&
&!-- Root Logger --&
&asyncRoot level=&DEBUG&&
&appender-ref ref=&DevLog& /&
&appender-ref ref=&Console& /&
&/asyncRoot&
为logger async 用的是无锁并发技术,必须引入
测试了下,单线程异步比同步效率提高了1倍。线程越多性能提高越明显。
如果要加上位置信息比如哪个类,第几行,需要设置&includeLocation=&true&
但默认不设置好像也是true,
location 主要包含了如下:
one of the layouts is configured with a location-related attribute like HTML&,
or one of the patterns&,&,&,&,&, Log4j will take a snapshot of the stack, and walk the stack trace to find the location information.
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:188956次
积分:3095
积分:3095
排名:第5300名
原创:115篇
转载:41篇
评论:35条
(2)(1)(1)(1)(2)(1)(11)(2)(1)(1)(2)(3)(6)(1)(3)(5)(1)(3)(10)(13)(28)(5)(17)(5)(1)(2)(4)(10)(1)(1)(5)(2)(1)(1)(1)(1)(1)log4j的相关jar包总结 - 涅槃 - ITeye技术网站
博客分类:
可能遇到的jar包:
(来源:)
commons-logging apache最初的日志门面,目的是在开发组件时不强依赖日志实现,给调用者以选择。jcl-over-slf4j slf4j开发的为了兼容前者的适配,里面的内容和前者基本一致,引用时和前者互斥。slf4j-api
slf4j的主api,作为独立的日志门面。slf4j-log4j slf4j对log4j的适配,要和log4j包一起引用log4j log4j实现logback-classic logback实现。 引用关系:目前项目中的log4j引用比较混乱。可用的依赖和使用方式由如下那么几种:
1. log4j-1.2.16.jar不使用框架,仅使用实现。项目中不常使用使用Logger.getLogger()
<p style="color: #333333; font-family: arial, sans- font-size: 12 line-height: 16..commons-logging + log4j简单门面+实现使用import mons.logging.Limport mons.logging.LogFprivate static final Log logger = LogFactory.getLog(CourseCenterUnitTestBase.class);
<p style="color: #333333; font-family: arial, sans- font-size: 12 line-height: 16.. jcl-over-slf4j + slf4j-api + slf4j-log4j + log4jslf4j门面+log4j实现。官方解释是这个组合,解释为jcl-over-slf4j的作用是把apache的门面嫁接到slf4j的门面。我测试了一下,实际上commons-logging + slf4j-api + slf4j-log4j + log4j
貌似也行得通。使用import org.slf4j.Limport org.slf4j.LoggerFprivate static final Logger logger = LoggerFactory.getLogger(CourseCenterUnitTestBase.class);
<p style="color: #333333; font-family: arial, sans- font-size: 12 line-height: 16..jcl-over-slf4j + slf4j-api + logback-classicslf4j门面+logback实现。没使用过,相信网上一大堆。
浏览: 86112 次
来自: 上海
http://lhttp://lzhw1985.iteye.c ...log4j-1.2.16
JAR包免积分下载 - 下载频道
- CSDN.NET
&&&&log4j-1.2.16
JAR包免积分下载
log4j-1.2.16
JAR包免积分下载
log4j-1.2.16.jar免积分下载
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行

我要回帖

更多关于 idea导入jar包 的文章

 

随机推荐