0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样将日志添加到Java应用程序

454398 来源:wv 2019-09-27 10:22 次阅读

步骤1:创建新应用程序

启动Netbeans并选择创建新的项目。我们要创建一个Maven项目。

选择Java Maven项目后,为您的项目命名。我叫我的MyFirstLoggingApplication。

步骤2:添加主类-使之可执行

您现在应该拥有一个全新的干净应用程序。我们首先需要创建一个简单的Java类,并添加main方法使其可执行。我们将使其保持简单,并添加一些附加内容以向控制台编写一些内容。

创建一个新的Java类

命名它。我的示例是MyLoggingApplication

接下来,我们使用以下代码添加main方法:

/*

* My application header

*/

package com.thegeekbiker.myfirstloggingapplication;

/**

* @author LordFluffyGoggles

*/

public class MyLoggingApp {

//main method

public static void main(String[] args) {

System.out.println(“Application starting processes here.”); // Display the string.

System.out.println(“Application do more stuff here.”);

System.out.println(“Application end processes here.”);

}

}

运行此应用程序时,您将看到三行内容输出。第一个代表启动过程,主要应用程序运行,最后一个代表应用程序完成。

步骤3:添加Log4J日志记录模块并配置

我们将使用Log4J模块。在该站点上:

将日志语句插入代码中是调试它的技术含量较低的方法。这也可能是唯一的方法,因为调试器并不总是可用或不适用。对于多线程应用程序和整个分布式应用程序通常是这种情况。

打开pom.xml文件。此文件是Maven如何下载所需的软件包和模块供我们使用的方式。

添加以下代码:

log4j

log4j

1.2.17

如果您现在启动应用程序,您将看到应用程序抱怨log4j没有可用的配置,因此未启用日志记录。

有多种配置log4j的方法。我们将使用属性文件。

在应用程序的根文件夹中创建一个名为log4j.properties的文件。这不是理想的选择,但是在以后的文章中,我将介绍有关移动资源文件的信息

现在,我们希望我们的应用程序仍将所有日志记录写入控制台,但是我们将继续它也可以写入日志文件。以防万一您以后需要调查问题。

将以下部分添加到您的log4j.properties文件中:

# Root logger option

log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console

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=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.

log4j.appender.file=org.apache.log4j.RollingFileAppender

log4j.appender.file.File=C:logsMyLoggingApp.log

log4j.appender.file.MaxFileSize=5MB

log4j.appender.file.MaxBackupIndex=10

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

步骤4:将日志记录添加到应用程序中

我们需要通过我们的应用程序中的错误来知道哪个类。因此,我们需要将记录器实例与写入日志文件的类相关联。对于我们的测试应用程序,它非常简单,因为我们只有一个类。

在该类中添加以下行:

final static Logger logger = Logger.getLogger(MyLoggingApp.class);

现在我们需要将log4j配置为读取我们创建的属性文件。幸运的是,这仅需要一次,而不是每个班级都需要。

main方法中的以下代码应该足以加载属性文件:

PropertyConfigurator.configure(“log4j.properties”);

如果您现在运行应用程序,但仍然抱怨找不到文件,那么您可能需要将文件复制到pom.xml文件所在的目录。如前所述,在以后的文章中,我将讨论如何确切指定这些文件的类型。

您可以在应用程序的各个级别进行登录。错误,警告,调试,信息等。

我将在此处和此处添加一些信息和调试信息,以便您了解如何以及在何处使用它。

public class MyLoggingApp {

final static Logger logger = Logger.getLogger(MyLoggingApp.class);

//main method

public static void main(String[] args) {

PropertyConfigurator.configure(“log4j.properties”);

if(logger.isInfoEnabled()) logger.info(“Application starting.。.”);

System.out.println(“Application starting processes here.”);

if(logger.isInfoEnabled()) logger.info(“Application started successfully”);

try{

System.out.println(“Application do more stuff here.”);

if(logger.isDebugEnabled()) logger.debug((“Application did something”));

} catch (Exception e){

logger.error(“Something went wrong :”+e);

}

if(logger.isInfoEnabled()) logger.info(“Application finishing up.。.”);

System.out.println(“Application end processes here.”);

if(logger.isInfoEnabled()) logger.info(“Application finished.。.”);

}

}

步骤5:运行应用程序

剩下的就是运行应用程序并检查日志文件。

2015-10-31 22:00:30 INFO MyLoggingApp:18 - Application starting.。.

2015-10-31 22:00:30 INFO MyLoggingApp:20 - Application started successfully

2015-10-31 22:00:30 DEBUG MyLoggingApp:23 - Application did something

2015-10-31 22:00:30 INFO MyLoggingApp:27 - Application finishing up.。.

2015-10-31 22:00:30 INFO MyLoggingApp:29 - Application finished.。.

由于我们的应用程序没有发生任何错误,因此没有显示ERROR行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2966

    浏览量

    104702
收藏 人收藏

    评论

    相关推荐

    日志框架简介-Slf4j+Logback入门实践

    结果不受日志的有无影响,但没有日志应用程序是不完整的,甚至可以说是有缺陷的。优秀的日志系统可以 记录操作轨迹 、 监控系统运行状态 和 解决系统故障 。
    的头像 发表于 07-30 10:00 1127次阅读
    <b class='flag-5'>日志</b>框架简介-Slf4j+Logback入门实践

    华纳云:java web和java有什么区别java web和java有什么区别

    Java Web和Java是两个不同的概念,它们在功能、用途和实现方式上存在一些区别,下面详细介绍它们之间的区别。 1. 功能和用途: – Java是一种编程语言,它提供了一种用于开
    的头像 发表于 07-16 13:35 785次阅读
    华纳云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么区别<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么区别

    请问如何cURL库添加到ESP8266_RTOS_SDK项目中?

    我想使用 curl api,但我不知道如何添加到我的项目中,这样当我将该库的头文件包含在我的项目中时它就不会抱怨。 有谁知道如何正确地第三方库添加到ESP8266_RTOS_SD
    发表于 07-09 07:52

    请问如何.C的图片文件添加到VScode(PlatfromIO)生成的lvgh项目中?

    当使用LVGL官方网页转换器,png图片转换为.c矩阵文件之后,如何.c的图片文件加到VScode(PlatfromIO)的lvgh工程里面?<br> 不管是把.c放到assets、lib、include为什么每
    发表于 06-17 06:03

    使用Linux CLI应用程序进行批量传输,无法执行写入/读取操作怎么解决?

    传输。 2) 测试 VID/PID 已添加到 .inf 中。 3) 使用 FX3-sdk(windows)构建固件。 现在我要进行 Linux 设置 1) 应用程序
    发表于 05-29 06:07

    在RZ/T2M和RZ/N2L中Printf添加方法(使用查询模式实现UART)

    RZ/N2L是一种工业以太网通信用MPU,可轻松网络功能添加到工业设备中。
    的头像 发表于 05-21 14:08 634次阅读
    在RZ/T2M和RZ/N2L中Printf<b class='flag-5'>添加</b>方法(使用查询模式实现UART)

    STM32F746 QSPI的Flash扩展后,添加到工程下载发现报错,为什么?

    使用 W25Q128 模块 ,使用的是微雪STM32F746IGT6的开发板,在QSPI进行Flash扩展了解发现需要做一个.FLM的Flash编程算法,我找一个STM32H7的进行修改,然后添加到工程下载发现报错,无法加载算法,有大佬自己做过Flash编程算法吗,求解
    发表于 04-17 06:31

    怎么把stlink server添加到keil里?

    stlink server的使用说明里面是支持keil5.25的。怎么把stlink server添加到keil里?
    发表于 03-27 07:28

    TC399 adc能添加到同一个队列中并得到结果吗?加入队列是否有任何限制?

    添加到队列中并得到结果。 我的疑问是,有了这些不同的频道和组,我还能把它们添加到同一个队列中并得到结果吗?加入队列是否有任何限制?
    发表于 03-04 06:33

    如何F-RAM™添加到现有的PSoC™ Creator项目?

    我们在PSoC™ Creator 中有一个 PSoC6 项目,并希望 QSPI F-RAM™存储器添加到TDA5235_868_5_BOARD中。我很难找到如何在F-RAM™ PSoC
    发表于 03-01 12:14

    FCX3是否具有PTS或SCR添加到映像帧的功能?

    问题 1) FCX3是否具有PTS或SCR添加到映像帧的功能,如随附的USB规范中所述? 如果可能,请提供有关如何配置每个 PTS 和 SCR 的详细信息。 问题 2) CAN FCX3 支持1080x1280@120fps传输带宽? 如果这很困难,请让我知道实际使用
    发表于 02-26 08:23

    如何TC1798器件添加到MDK KEIL?

    我正在尝试使用 KEIL MDK(µVision)为英飞凌TC1798编程,但我不确定如何TC1798器件添加到MDK KEIL。 谁能帮我拿到 .pack 或者.zip 对于 TC1798?
    发表于 02-01 08:18

    如何CMSIS DSP库添加到XMC4700 Relax Kit的Dave CE项目中?

    我刚开始研究 Dave,这对我来说还是个新事物。 我创建了一个 Dave CE 项目,并能够启动并运行 blink 代码。 我想将 CMSIS DSP 库添加到我的项目中,并使用库中的 DSP 函数
    发表于 02-01 07:11

    TC397 Infineon-AURIX_STM_Interrupt_1_KIT_TC397例程添加到RTOS中不工作的原因?

    使用Infineon-AURIX_STM_Interrupt_1_KIT_TC397 例程添加到RTOS中不工作,到达设定的时间不能触发中断,而单独的例程是没有问题的,请问出现此问题是什么原因?是否与RTOS有关?
    发表于 01-24 07:42

    u8g2应用程序无法在moduStoolBox中构建是为什么?

    一些帮助。 u8g2 应用说明书 Step2 问题:它说把这个库添加到应用程序中。 这是库管理器中的 SSD1306 OLED 控制器库吗? Step3 问题:它显示从 github 向应用程序
    发表于 01-24 07:03