1、项目目录结构图,lib包引入了一些关于common logging+log4j2相关的jar。

2、编写相关的build.xml

<?xml version="1.0" encoding="utf-8"?>
<!--定义生成文件的project根元素,默认的target为空-->
<project name="log4j2Test" basedir="." default="all">
<target name="all" depends="help,init,compile,build,run,clean">
<echo>Finish!</echo>
</target> <!--定义4个简单属性-->
<property name="src" value="src"/>
<property name="classes" value="classes"/>
<property name="lib" value="lib"/>
<property name="dest" value="dest"/>
<property name="log" value="log"/> <!--定义help target,用于输出该生成文件的帮助信息-->
<target name="help" description="打印帮助信息">
<echo>help - 打印帮助信息</echo>
<echo>complie - 编译Java源文件</echo>
<echo>run - 运行程序</echo>
<echo>build - 打包Jar包</echo>
<echo>clean - 清除所有编译生成的文件</echo>
</target> <!--init target,初始化-->
<target name="init">
<delete dir="${classes}"/>
<mkdir dir="${classes}"/>
<delete dir="${dest}"/>
<mkdir dir="${dest}"/>
<delete dir="${log}"/>
<mkdir dir="${log}"/>
</target> <!--定义一组文件路径集-->
<path id="classpath">
<fileset dir="${lib}">
<include name="**/*.jar"/>
</fileset>
<pathelement path="${classes}"/>
</path> <!--定义complie target,用于编译Java源文件-->
<target name="compile" description="编译java源文件">
<!--编译java文件,编译后的class文件放到classes属性所代表的文件夹内-->
<javac destdir="${classes}" includeantruntime="yes" encoding="utf-8">
<!--指定需要编译的Java文件所在的位置-->
<src path="${src}"/>
<!--指定编译Java文件所需要的第三方类库所在的位置-->
<classpath refid="classpath"/>
</javac>
</target> <!--定义build target,用于打包jar文件,运行该target之前会先运行compile target-->
<target name="build" description="打包jar文件" depends="compile">
<!--将项目中除编译生成class文件的java文件之外的其他类型文件拷贝到对应的文件夹-->
<copy todir="${classes}">
<fileset dir=".">
<include name="log4j2.xml"/>
<include name="说明.txt"/>
</fileset>
</copy>
<!--指定将classes属性所代表的文件夹下的所有*.class文件都打包到app.jar文件中-->
<jar destfile="${dest}/app-1.0.2.jar" basedir="${classes}" includes="**/*.class **/*.xml **/*.txt">
<!--为jar包的清单文件添加属性-->
<manifest>
<attribute name="Main-Class" value="src.com.lfy.Student"/>
</manifest>
<!--将相关被引用的包以解压后的方式打包进jar包中-->
<zipfileset src="${lib}/commons-logging-1.2.jar"></zipfileset>
<zipfileset src="${lib}/log4j-jcl-2.12.0.jar"></zipfileset>
<zipfileset src="${lib}/log4j-core-2.12.0.jar"></zipfileset>
<zipfileset src="${lib}/log4j-api-2.12.0.jar"></zipfileset>
</jar>
<!--打包第3方jar通过引用的方式运行的可执行jar-->
<jar destfile="${dest}/app-1.0.3.jar" basedir="${classes}" includes="**/*.class **/*.xml **/*.txt">
<!--为jar包的清单文件添加属性-->
<manifest>
<attribute name="Main-Class" value="src.com.lfy.Student"/>
</manifest>
<!--将相关被引用的包以解压后的方式打包进jar包中-->
<zipfileset src="${lib}/commons-logging-1.2.jar"></zipfileset>
<zipfileset src="${lib}/log4j-jcl-2.12.0.jar"></zipfileset>
<zipfileset src="${lib}/log4j-core-2.12.0.jar"></zipfileset>
<zipfileset src="${lib}/log4j-api-2.12.0.jar"></zipfileset>
</jar>
</target> <!--定义run target,用于运行Java源文件,运行该target之前会先运行compile target-->
<target name="run" description="运行程序" depends="compile">
<!--运行lfy.HelloWorld类,其中fork指定启动另一个JVM来执行Java命令-->
<java classname="src.com.lfy.Student" fork="yes" failonerror="true">
<classpath refid="classpath"/>
<!--运行Java程序时传入2个参数-->
<arg line="测试参数1 测试参数2"/>
</java>
<!--运行可执行jar文件-->
<java jar="${dest}/app-1.0.2.jar" fork="yes" failonerror="true">
<!--运行Java程序时传入2个参数-->
<arg line="p1 p2"/>
</java>
<java jar="${dest}/app-1.0.3.jar" fork="yes" failonerror="true">
<!--运行Java程序时传入2个参数-->
<arg line="p1 p2"/>
</java>
</target> <!--定义clean target,用于删除所有编译生成的文件-->
<target name="clean" description="清除所有编译生成的文件">
<delete dir="${classes}"/>
<delete dir="${dest}"/>
<delete dir="${log}"/>
</target> </project>

3、编写log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<!-- 定义日志格式 -->
<Property name="log.pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36}%n%msg%n%n</Property>
<!-- 定义文件名变量 -->
<Property name="file.all.filename">log/all.log</Property>
<Property name="file.all.pattern">log/all.%i.log.gz</Property>
<Property name="file.err.filename">log/err.log</Property>
<Property name="file.err.pattern">log/err.%i.log.gz</Property>
</Properties>
<!-- 定义Appender,即目的地 -->
<Appenders>
<!-- 定义输出到控制台 -->
<Console name="console" target="SYSTEM_OUT">
<!-- 日志格式引用上面定义的log.pattern -->
<PatternLayout pattern="${log.pattern}"/>
</Console>
<!-- 定义输出到文件,文件名引用上面定义的file.all.file.filename -->
<RollingFile name="all" bufferedIO="true" fileName="${file.all.filename}" filePattern="${file.all.pattern}">
<PatternLayout pattern="${log.pattern}"/>
<Policies>
<!-- 根据文件大小自动切割日志 -->
<SizeBasedTriggeringPolicy size="10 KB" />
</Policies>
<!-- 保留最近5份 -->
<DefaultRolloverStrategy max="5" />
</RollingFile>
<!-- 定义输出到文件,文件名引用上面定义的file.err.file.filename -->
<RollingFile name="err" bufferedIO="true" fileName="${file.err.filename}" filePattern="${file.err.pattern}">
<PatternLayout pattern="${log.pattern}"/>
<Policies>
<!-- 根据文件大小自动切割日志 -->
<SizeBasedTriggeringPolicy size="2 KB" />
</Policies>
<!-- 保留最近5份 -->
<DefaultRolloverStrategy max="5" />
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<!-- 对info级别的日志,输出到console -->
<AppenderRef ref="console" level="info"/>
<!-- 对info级别的日志,输出到all,即上面定义的RollingFile -->
<AppenderRef ref="all" level="info"/>
<!-- 对error级别的日志,输出到err,即上面定义的RollingFile -->
<AppenderRef ref="err" level="error"/>
</Root>
</Loggers>
</Configuration>

4、编写Person.java、Student.java

Person.java

package src.com.lfy;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; public class Person{
/**
* 使用LogFactory.getLog(getClass()),也可以使用LogFactory.getLog(Person.class)
* 前者可以使子类的实例直接使用log,看Student.java中的代码
*/
protected final Log log=LogFactory.getLog(getClass());
void foo(){
log.info("Person.foo()");
}
}

Student.java

package src.com.lfy;

public class Student extends Person{
void bar(){
log.info("Student.bar()");
try{
int a=5,b=1;
b=a/0;
}catch(Exception e){
//捕获异常非常简单
log.error("got exception",e);
}
}
public static void main(String[] agrs){
Student stu=new Student();
stu.bar();
}
}

5、运行结果

6、总结:实现了简单的log4j应用。

Ant-编译构建(2)-第3方jar包引入、log4j2的更多相关文章

  1. 如何利用maven将本地jar包引入到工程之中

    1.在个人开发模式下,可以将jar包放入项目的lib目录中,在pom.xml中做如下配置: <dependencies> <dependency> <groupId> ...

  2. [Android]proguard重新编译和如何不混淆第三方jar包

    转载自:http://glblong.blog.51cto.com/3058613/1536516 一.ant安装.环境变量配置及验证 (一)安装ant 到官方主页http://ant.apache. ...

  3. 构建Maven项目自动下载jar包

    使用Maven 自动下载jar包 右键单击项目,将项目 转换成Maven 项目 然后进去Maven官网 http://mvnrepository.com/ 这里有大量的jar包供我们使用,比如我现在要 ...

  4. 【转】构建Maven项目自动下载jar包

    原文地址:https://blog.csdn.net/gfd54gd5f46/article/details/54973954 使用Maven 自动下载jar包 右键单击项目,将项目 转换成Maven ...

  5. eclipse把jar包引入项目的两种方法

    方法一: build path引入jar包 方法二: 把jar包放入lib文件夹 区别: 把jar包放入lib文件夹,以后把程序发给别人,别人可以直接运行而无需再自己添加jar包 总结: 1.有时即使 ...

  6. jjava:将jar包引入环境变量的一个骚操作以及因此搞出来的扑街问题

    现在我有一个java文件,我只想javac启动,但是这货import了一堆jar里面的东西. 于是我下回了所有的jar包,将这些jar包丢到jdk1.8.0_162\jre\lib\ext里面就ok了 ...

  7. 04-SSH综合案例:环境搭建之jar包引入

    刚才已经把表关系的分析已经分析完了,现在呢就先不去创建这个表,写到哪儿的时候再去创建这个表. 1.4 SSH环境搭建: 1.4.1 第一步:创建一个web项目. 1.4.2 第二步:导入相应jar包. ...

  8. 怎样把本地的jar包引入到maven工程里面

    有些jar包在maven库里面查找不到,但是maven项目又有用到,此时最简单的方法就是把该jar包放到工程底下某个目录,然后在pom.xml里面配置dependency引入它. 具体如何操作呢? 假 ...

  9. jenkins#构建并部署springboot的jar包

    0. 前提是有一个可以用的没有问题的Jenkins环境,这是基础 1. 安装publish over ssh 插件,(如果网速太慢,请去github 克隆代码,然后自己构建,然后上传安装此插件) 2. ...

随机推荐

  1. IDEA设置类和方法的注释

    类注释 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #pa ...

  2. Azure IoT 技术研究系列2

    上篇博文中,我们主要介绍了Azure IoT Hub的基本概念.架构.特性: Azure IoT 技术研究系列1-入门篇 本文中,我们继续深入研究,做一个起步示例程序:模拟设备注册到Azure IoT ...

  3. Maven Pom文件标签详解

    <span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...

  4. 前端之JavaScript:JS之DOM对象二

    继续JS之DOM对象二 前面在JS之DOM中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement(' ...

  5. 在Wi-Fi路由器中发现了新的安全漏洞

    黑客利用两种互联网通用协议的互动的漏洞:传输控制协议,或TCP和Wi-Fi.该漏洞利用并不针对任何传统的安全漏洞.相反,安全方面的弱点在于20多年前制定的基本Wi-Fi设计决策极难改变. 中国黑客教父 ...

  6. IO操作基本步骤

    package com.study02; import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundE ...

  7. Git之仓库管理

    介绍以及安装: Git 是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发.Git ...

  8. webkit内核的浏览器常见7种分别是..

    Google Chrome Safari 遨游浏览器 3.x 搜狗浏览器 阿里云浏览器 QQ浏览器 360浏览器 ...

  9. Sublime Text3 使用Package Control 报错There Are No Packages Available For Installation 解决

    "channels": [ "https://packagecontrol.io/channel_v3.json"], 无法连接的问题 网上说了挺多原因,简单例 ...

  10. 事物Spring boot @Transactional

    事物:dr @Override @UDS(value="fq") @Transactional public BaseResultMessage testTransactional ...