上一章节呢,有一个能跑的程序了。但是对做工程的人来说,用日志输出感觉比用System.out要有档次一点。比如使用log4j。直接上例子:

1进入D:\work\gradle\log目录  ,您电脑没这目录? 那辛苦自己一级一级建立起来吧,后面的目录也一样。

新建文件build.gradle,文件内容是:

 apply plugin: 'java' // 引入java插件,

 repositories {    // 从哪里找jar包
flatDir {
// 先看下build.gradle文件所在目录下的 libs目录中有没有
dirs 'libs'
}
maven {
//如果目录中木有,则找url对应的maven仓库,下面是阿里的maven仓库,速度杠杆的。
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
mavenCentral() //如果都木有,则取maven的官方仓库吧,只是这个速度要看人品
}
dependencies {
// 我们代码里需要用到的jar,可以引入不用,但是用了必须引入。
compile 'log4j:log4j:1.2.17' //编译时需要的jar
testCompile 'junit:junit:4.11' //编译测试文件所需要的
} jar { //生成jar包,
// 把用到的所有的jar都打到生成的jar中。以便java -jar 执行,居家旅行必备,当然只是提供一个jar给别人用就可以注释该行了
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
manifest { //配置 Manifest文档属性
attributes 'Main-Class': 'log.Hello' //指定程序入口
}
}

build.gradle

2、进入目录 D:\work\gradle\log\src\main\java\log,新建文件Hello.java,键入内容

 package log;
import org.apache.log4j.Logger; public class Hello{
private static Logger logger = Logger.getLogger(Hello.class); public static void main(String [] args){
logger.info("hello,world. welcome to gradle");
}
}

3、进入目录:D:\work\gradle\log\src\main\resources ,新建文件log4j.properties ,键入内容

 ### 设置###
log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n ### 输出DEBUG 级别以上的日志到=d://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = d://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 输出ERROR 级别以上的日志到=d://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =d://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

log4j.properties

4、返回目录:D:\work\gradle\log,

打开cmd进入该目录,键入: gradle assemble

5、打开目录 D:\work\gradle\log\build\libs

打开cmd进入该目录,键入:java –jar log.jar

此时看到 console 输出了 hello,liyong,welcome to gradle

Ok,到此我们能够使用外部的log4的jar包进行编程了。如果您只需要有个能干活的工程,差不多了到此就好了。


下面照例解释下为啥这么玩。不过还是建议先看看上一篇 <项目自动化建构工具gradle 入门1——输出helloWorld>。

步骤1:

和上一篇相比,这个build.gradle 多了一下配置项。我们一一说明:

repositories 配置的是从哪里拿到代码中依赖的jar包。我们配置了3个项

  flatDir 是本地文件目录中,根目录是 build.gradle 所在的目录。

  maven 是自定义的maven仓库,url是自定义maven仓库的地址。我找到是阿里提供的,速度不错

  mavenCentral() 是maven官方仓库。

  其实这3个,只要gradle能找到该文件就行,随便配置一个就好了,即使你使用了flatDir,它仍会去网络上去找的。

dependencies 配置的是代码需要依赖哪些jar包

  complie 是代码编译的时候需要依赖这些jar包,

  testCompile 是指测试代码编译时需要依赖的jar包,

  除此之外,还有几个配置,比如runtime 指程序跑的时候需要哪些jar包,大家可以试试看。

  至于compile后面为什么要这么写,实际上这是gradle 的规则,对刚入门的童鞋来说,我们不需要懂太多只需先知道如何写如何用就行了,当以后用多了自然就懂了。最简单的办法是:

  1、进入网站 http://mvnrepository.com ,2、搜索log4j ,3、在搜索结果中进入第一个 项 log4j ,4、然后选择一个版本,进入如下图所示页面

   如图所示,切换到gradle 标签,有group name version 对应的3个字符串,用冒号把这3个字符串按顺序连起来就好了。

jar 的配置多了一行,你可以尝试把添加的那行去掉,再执行4,5。应该会出现该图

但是不添加能不能运行呢,也可以,但是我们得先把需要依赖的jar包找到。

jar包我们使用gradle下载过来了,C:\Users\用户名\.gradle 文件夹中,最直接就是在文件夹中搜索log4j 。

我们将该log4j的jar拷贝到 D:\work\gradle\log\build\libs ,然后用压缩软件打开log.jar,进入D:\work\gradle\log\build\libs\log.jar\META-INF\,编辑MANIFEST.MF

在末尾添加一行:  Class-Path: classes/ log4j-1.2.17.jar ,此时MANIFEST.MF 文件应该是这样的:

Manifest-Version: 1.0
Main-Class: log.Hello
Class-Path: classes/ log4j-1.2.17.jar

  

然后再执行步骤5 。是不是就ok呢?

步骤2:没什么好说的,一个java 文件,唯一注意的是package 是log;

步骤3 是log4j 的配置文件,注意会在D:/logs中生成日志文件

步骤4,5 和上一篇文章一致,都是怎么编译和运行

项目自动化建构工具gradle 入门2——log4j输出helloWorld的更多相关文章

  1. 项目自动化建构工具gradle 入门4——javaWeb在浏览器中显示helloWorld

    在java应用中,其实做的最多的还是java web应用.所以现在我们做的就是用gradle构建一个简单的web项目,简单点,直接上代码吧. 1.进入目录D:\work\gradle\web,新建文件 ...

  2. 项目自动化建构工具gradle 入门3——生一个exe的helloWorld

    前两次呢,我们能够用一个外部的jar 来实现输出helloWorld.但问题是我每次都要用java -jar 来执行,这样我们自己玩还可以,让用户玩就不好了.所以我们生成一个exe给他们吧.这次我们仍 ...

  3. 项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程

    之前的几个小节,都是纯手工建文件夹,纯手工拷贝war包,或者纯手工解压个zip看看结果,,,,这还是我写了玩的helloWorld.若是玩大工程.几十个人的团队协同开发时,这么玩,,,,暴躁的程序员估 ...

  4. 项目自动化建构工具gradle 入门0——环境 & 废话

    gradle 是一个项目自动化构建工具.同类的产品还有ant ,maven等等.相比之下我更喜欢gradle,它语法简洁.兼容maven.ide集成很好. 学习使用gradle最快的方式是看文档,而且 ...

  5. 项目自动化建构工具gradle 入门1——输出helloWorld

    先来一个简单的例子,4个步骤: 1.进入D:\work\gradle\java 目录  ,您电脑没这目录? 那辛苦自己一级一级建立起来吧 新建文件build.gradle,文件内容是: apply p ...

  6. 前端项目自动化构建工具——Webpack入门教程

    参考资料:https://www.webpackjs.com/(中文文档)   https://www.webpackjs.com/(官方文档) 首先有必要说明一下,本文侧重讲解webpack基本配置 ...

  7. 基于 Groovy 的自动化构建工具 Gradle 入门(转)

    本人工作之初没有使用自动化构建,后来敏捷了,开始使用 Ant - 完全面向过程的定义步骤,不进行依赖管理.再发展到 Maven,面向对象的方式管理工程,有了依赖的管理,JAR 包统一从中央仓库获得,保 ...

  8. 自动化构建工具gradle安装教程(使用sdkman安装)

    gradle是什么?(wiki解释) Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的 ...

  9. gulp前端自动化构建工具新手入门篇

    很久没有更新博文了. 经过了一次年前吐血的赶项目,终于在年后回血了.趁着有空,新学到了一个前端自动化构建工具-gulp. 现在我们通过这3个问题来学习一下: 1.什么是gulp? 2.为什么要用gul ...

随机推荐

  1. JavaScript高级编程 (2) - HTML 与 JavaScript

    向HTML 页面中插入JavaScript 的主要方法,就是使用<script>元素.这个元素由Netscape 创造并在Netscape Navigator 2 中首先实现.后来,这个元 ...

  2. UML类图与面向对象设计原则

    1. 引言     从大一开始学习编程,到如今也已经有两年了.从最初学习的Html,Js,JaveSe,再到JavaEE,Android,自己也能写一些玩具.学习过程中也无意识的了解了一些所谓的设计模 ...

  3. NodeJs+http+fs+request+cheerio 采集,保存数据,并在网页上展示(构建web服务器)

    目的: 数据采集 写入本地文件备份 构建web服务器 将文件读取到网页中进行展示 目录结构: package.json文件中的内容与上一篇一样:NodeJs+Request+Cheerio 采集数据 ...

  4. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

  5. geotrellis使用(二十六)实现海量空间数据的搜索处理查看

    目录 前言 前台实现 后台实现 总结 一.前言        看到这个题目有人肯定会说这有什么可写的,最简单的我只要用文件系统一个个查找.打开就可以实现,再高级一点我可以提取出所有数据的元数据,做个元 ...

  6. 解决手机浏览器上input 输入框导致页面放大的问题(记录)

    在微信手机页面开发当中,页面是没有问题的,但是当焦点在input输入框的时候,手机页面会自动放大. 加入以下代码在head 区,可解决此问题 <meta name="viewport& ...

  7. Linux平台 Oracle 11gR2 RAC安装Part2:GI安装

    三.GI(Grid Infrastructure)安装 3.1 解压GI的安装包 3.2 安装配置Xmanager软件 3.3 共享存储LUN的赋权 3.4 使用Xmanager图形化界面安装GI 3 ...

  8. ZKWeb网站框架的动态编译的实现原理

    ZKWeb网站框架是一个自主开发的网页框架,实现了动态插件和自动编译功能. ZKWeb把一个文件夹当成是一个插件,无需使用csproj或xproj等形式的项目文件管理,并且支持修改插件代码后自动重新编 ...

  9. Windows下Memcached安装与配置实例

    环境声明: 服务器: Windows Server 2008r2: Memcached: Memcached 64-bit for Windows(64位) From: http://www.urie ...

  10. java.lang.Class.isAssignableFrom()用法解析

    一.概述: 此方法主要用来判断 "参数类" 是否是 "源类" 的子类.接口实现类,或者与 "源类" 相同,在此情况下返回 true; 二.格 ...