欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java日志源代碼,java的日志類

java怎么寫日志記錄,最好是完整的代碼!謝啦!

常用2種方式,具體你可以去自己寫,建議,編程前期主要靠你自己琢磨,他人給你思路即可。

在開(kāi)化等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷,外貿(mào)網(wǎng)站制作,開(kāi)化網(wǎng)站建設(shè)費(fèi)用合理。

1.用簡(jiǎn)單的讀寫文件實(shí)現(xiàn),寫一個(gè)寫文件的共用類,每次把日志寫到文件里即可。

2.用開(kāi)源免費(fèi)的日志工具,如log4j。

祝你成功!!

JAVA 采用單例設(shè)計(jì)模式設(shè)計(jì)日志處理類,并寫出代碼

import?java.util.Date;

public?class?Logger?{

private?static?Logger?instance;

private?static?Class?clazz;

private?Logger()?{

}

private?Logger(Class?clazz)?{

this.instance?=?new?Logger();

this.clazz?=?clazz;

}

public?static?Logger?getLogger(Class?clazz)?{

if?(instance?==?null)?{

synchronized?(Logger.class)?{

if?(instance?==?null)?{

instance?=?new?Logger(clazz);

}

}

}

return?instance;

}

public?void?info(String?msg)?{

System.out.println(clazz.getName()?+?"["?+?new?Date().toLocaleString()

+?"][info]:"?+?msg);

}

public?void?error(String?msg)?{

System.out.println(clazz.getName()?+?"["?+?new?Date().toLocaleString()

+?"][error]:"?+?msg);

}

public?void?warn(String?msg)?{

System.out.println(clazz.getName()?+?"["?+?new?Date().toLocaleString()

+?"][warn]:"?+?msg);

}

public?void?log(String?msg)?{

System.out.println(clazz.getName()?+?"["?+?new?Date().toLocaleString()

+?"][log]:"?+?msg);

}

public?static?void?main(String?args[])?{

Logger?s?=?Logger.getLogger(String.class);

s.info("普通消息");

}

}

log4j的使用,即java該如何使用日志文件

java使用日志文件log4j的方法:

1、 新建一個(gè)Java工程,導(dǎo)入Log4j包,pom文件中對(duì)應(yīng)的配置代碼如下:

!-- log4j support --

dependency

groupIdlog4j/groupId

artifactIdlog4j/artifactId

version1.2.17/version

/dependency

2、resources目錄下創(chuàng)建log4j.properties文件

### 設(shè)置###

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 級(jí)別以上的日志到=/home/duqi/logs/debug.log ###

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender

log4j.appender.D.File = /home/duqi/logs/debug.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 級(jí)別以上的日志到=/home/admin/logs/error.log ###

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender

log4j.appender.E.File =/home/admin/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

3、輸出日志的例子如下

package com.javadu.log;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class Log4JTest {

private static final Logger logger = LoggerFactory.getLogger(Log4JTest.class);

public static void main(String[] args) {

? ?// 記錄debug級(jí)別的信息

? ?logger.debug("This is debug message.");

? ?// 記錄info級(jí)別的信息

? ?logger.info("This is info message.");

? ?// 記錄error級(jí)別的信息

? ?logger.error("This is error message.");

}

}

4、輸出結(jié)果

首先,控制臺(tái)輸入如下圖所示:

然后,查看/Users/duqi/logs目錄下的debug.log和error.log文件,內(nèi)容分別如下,可以看出:

java代碼中添加日志

怎么會(huì)呢... log4j多好用啊, 你先下一個(gè)log4j的jar包, 導(dǎo)入到項(xiàng)目后, 在網(wǎng)上找一個(gè)log4j.properties文件(必須有這個(gè)文件), 把它放到src目錄下(必須), 然后需要打日志的時(shí)候logger.info("...")調(diào)用就好了啊, 沒(méi)啥別的啊... 畢竟只是個(gè)日志文件, 如果你要打到文件里, 在log4j.properties文件里設(shè)置路徑參數(shù)就好了, 純手打望采納!

用java 代碼實(shí)現(xiàn)log4j的日志輸出功能

寫一個(gè)log4j的properties文件,再在web.xml里面配置一下就ok了,你參考下吧

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]-%-5p %t (%C.%M:%L) | %m%n

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

log4j.appender.file.File=e:/Logs/PB/root.log

log4j.appender.file.MaxFileSize=5000KB

log4j.appender.file.MaxBackupIndex=5

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

log4j.appender.file.layout.ConversionPattern=[%d]-%-5p %t | %m%n

log4j.logger.java.sql = DEBUG,ibatis

log4j.additivity.java.sql=false

log4j.logger.java.sql.Connection = DEBUG

log4j.logger.java.sql.Statement = DEBUG

log4j.logger.java.sql.PreparedStatement = DEBUG

log4j.logger.java.sql.ResultSet = DEBUG

log4j.logger.com.ibatis = DEBUG,ibatis

log4j.additivity.com.ibatis=false

log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG

log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel=DEBUG

log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientImpl=DEBUG

log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser=DEBUG

log4j.logger.com.ibatis.common.util.StopWatch=DEBUG

log4j.appender.ibatis=org.apache.log4j.RollingFileAppender

log4j.appender.ibatis.File=e:/Logs/PB/ibatis.log

log4j.appender.ibatis.MaxFileSize=5000KB

log4j.appender.ibatis.MaxBackupIndex=5

log4j.appender.ibatis.Threshold=DEBUG

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

log4j.appender.ibatis.layout.ConversionPattern=[%d]%m%n

log4j.rootLogger=DEBUG,stdout,file

log4j.logger.org.springframework=INFO

log4j.logger.org.displaytag=INFO

log4j.logger.freemarker=INFO

log4j.logger.com.opensymphony.xwork2=INFO

log4j.logger.com.pracbiz=DEBUG

java中event日志怎么寫

編程語(yǔ)言

這份Java日志格式規(guī)范,拿走不謝!

?

androidstarjack

轉(zhuǎn)載

關(guān)注

0點(diǎn)贊·124人閱讀

點(diǎn)擊上方關(guān)注 “終端研發(fā)部”

設(shè)為“星標(biāo)”,和你一起掌握更多數(shù)據(jù)庫(kù)知識(shí)

登錄后復(fù)制

作者: 思影影思

來(lái)源: blog.csdn.net/lk142500/article/details/80424945

登錄后復(fù)制

Part1簡(jiǎn)介

在程序中寫日志是一件非常重要,但是很容易被開(kāi)發(fā)人員忽視的地方。寫好程序的日志可以幫助我們大大減輕后期維護(hù)壓力。在實(shí)際的工作中,開(kāi)發(fā)人員往往迫于巨大時(shí)間壓力,而寫日志又是一個(gè)非常繁瑣的事情,往往沒(méi)有引起足夠的重視。開(kāi)發(fā)人員應(yīng)在一開(kāi)始就養(yǎng)成良好的日志撰寫習(xí)慣,并且應(yīng)在實(shí)際的開(kāi)發(fā)工作中為寫日志預(yù)留足夠的時(shí)間。

1.1 日志的作用

一般程序日志出自下面幾個(gè)方面的需求:

記錄用戶操作的審計(jì)日志,甚至有的時(shí)候就是監(jiān)管部門的要求。

快速定位問(wèn)題的根源

追蹤程序執(zhí)行的過(guò)程。

追蹤數(shù)據(jù)的變化

數(shù)據(jù)統(tǒng)計(jì)和性能分析

采集運(yùn)行環(huán)境數(shù)據(jù) 一般在程序上線之后,一旦發(fā)生異常,第一件事就是要弄清楚當(dāng)時(shí)發(fā)生了什么。用戶當(dāng)時(shí)做了什么操作,環(huán)境有無(wú)影響,數(shù)據(jù)有什么變化,是不是反復(fù)發(fā)生等,然后再進(jìn)一步的確定大致是哪個(gè)方面的問(wèn)題。確定是程序的問(wèn)題之后再交由開(kāi)發(fā)人員去重現(xiàn)、研究、提出解決方案。這時(shí),日志就給我們提供了第一手的資料。

1.2 撰寫日志的要求

既然撰寫日志是有需求,而且也能在未來(lái)幫助我們提高工作效率的事情,長(zhǎng)遠(yuǎn)來(lái)看是非常有利的一件事情。因此我們應(yīng)該在自己開(kāi)發(fā)的程序中符合規(guī)范的撰寫日志,在寫日志時(shí)要注意以下的問(wèn)題。

歡迎關(guān)注公眾號(hào)"終端研發(fā)部",查看更多干貨!

1.2.1 日志的可讀性

日志時(shí)給人讀的,不僅僅是讓自己明白,也要讓沒(méi)有接觸過(guò)我們?cè)创a的其他程序員也能夠一目了然。有的同事在日志中打印特殊的標(biāo)識(shí)符號(hào),例如“++++++++++”, “===========”,“—————”,這些符號(hào)令人眼花繚亂。這是一種不好的編程習(xí)慣。另外,把日志分類輸出到不同的文件也有利于我們排除干擾,迅速找到我們需要的信息。而且,最好在打印日志時(shí)輸出英文,防止中文不支持而打印出亂碼的情況。

1.2.2 日志的性能

無(wú)論我們把日志寫到文件還是數(shù)據(jù)庫(kù),都需要消耗IO資源。適當(dāng)?shù)目刂迫罩镜妮敵鲆灿欣谔岣叱绦虻男阅堋@纾罕M量避免在在大的循環(huán)中打印意義不大的日志內(nèi)容。輸出日志之前最好能判斷日志的級(jí)別(例如. debug前先調(diào)用isDebugEnabled()作出判斷)。

1.2.3 占用磁盤空間

通常,我們都是把日志寫入磁盤上的日志文件中。適當(dāng)?shù)氖褂脻L動(dòng)日志并且定時(shí)清除舊文件是有好處的。我見(jiàn)過(guò)這樣一個(gè)例子,程序運(yùn)行幾次后就跑不起來(lái)了,前幾次都是正常的。怎么都想不明白程序有什么問(wèn)題,最后才發(fā)現(xiàn)居然是日志文件占滿了磁盤空間。在實(shí)際的應(yīng)用中出現(xiàn)上G的日志文件也往往不少見(jiàn)。要在這樣規(guī)模的日志文件中找出對(duì)解決問(wèn)題有用的信息也是一大挑戰(zhàn)。

1.2.4 日志的時(shí)效性

有的時(shí)候我們并不能及時(shí)的發(fā)現(xiàn)問(wèn)題。需要追溯之前的日志。所以我們是需要保留一段時(shí)間以內(nèi)的日志便于追溯。

1.2.5 日志級(jí)別

通常我們?cè)诋a(chǎn)品環(huán)境中日志的級(jí)別都在INFO以上,所以我們必須保證在這樣的情況下程序仍然能夠輸出足夠我們作出判斷的信息。例如常見(jiàn)的系統(tǒng)具有如下的日志級(jí)別:

// 定義FATAL級(jí)別輸出宏

#define DRV_LOG_FATAL(fmt, ...) hlog_format(HLOG_LEVEL_FATAL, "PluginDriver", "[%s(%d)] "fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__)

// 定義ERROR級(jí)別輸出宏

#define DRV_LOG_ERROR(fmt, ...) hlog_format(HLOG_LEVEL_ERROR, "PluginDriver", "[%s(%d)] "fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__)

// 定義WARN級(jí)別輸出宏

#define DRV_LOG_WARN(fmt, ...) hlog_format(HLOG_LEVEL_WARN, "PluginDriver", "[%s(%d)] "fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__)

// 定義INFO級(jí)別輸出宏

#define DRV_LOG_INFO(fmt, ...) hlog_format(HLOG_LEVEL_INFO, "PluginDriver", "[%s(%d)] "fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__)

// 定義DEBUG級(jí)別輸出宏

#define DRV_LOG_DEBUG(fmt, ...) hlog_format(HLOG_LEVEL_DEBUG, "PluginDriver", "[%s(%d)] "fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__)

// 定義TRACE級(jí)別輸出宏

#define DRV_LOG_TRACE(fmt, ...) hlog_format(HLOG_LEVEL_TRACE, "PluginDriver", "[%s(%d)] "fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__)

登錄后復(fù)制

?

上述的日志文件中定義了6種日志級(jí)別,不同級(jí)別的含義在下文詳述,需要了解到在一個(gè)程序開(kāi)發(fā)的過(guò)程中需要維護(hù)不同的分別為FATAL, ERROR, EARN, INFO, DEBUG, TRACE。

1.2.6 日志內(nèi)容

我們?cè)趯懭罩镜臅r(shí)候,需要注意輸出適當(dāng)?shù)膬?nèi)容。首先,盡量使用業(yè)務(wù)相關(guān)的描述。我們的程序是實(shí)現(xiàn)某種業(yè)務(wù)的,那么就最好能描述清楚這個(gè)時(shí)候走到了業(yè)務(wù)過(guò)程的哪一步。其次,避免在日志中輸出一些敏感信息,例如用戶名和密碼。以及,要保持編碼的一致。如果不能保證就盡量使用英文而不是中文。這樣當(dāng)我們拿到日志之后就不會(huì)因?yàn)榭吹揭欢褋y碼而不知所云了。

1.2.7 日志格式

常見(jiàn)的日志格式中對(duì)于每一條日志應(yīng)含有的信息包括日期、時(shí)間、日志級(jí)別、代碼位置、日志內(nèi)容、錯(cuò)誤碼等信息。下面是一個(gè)工作中的日志文件的一部分內(nèi)容:

2018-05-22 15:35:53.850 TRACE TDWZLog [0x00001b10] 36 TDWZProtocol::Init,TDWZProtocol::Init

2018-05-22 15:35:53.850 TRACE TDWZLog [0x00001b10] 89 TDWZProtocol::Init,End in processing TDWZProtocol::Init

2018-05-22 15:35:53.853 TRACE TDWZLog [0x00001b10] 142 TDWZProtocol::Connect,Connect Execute finish

2018-05-22 15:35:53.853 TRACE TDWZLog [0x00002f10] 149 GetAlarmEventPro,Enter GetAlarmEventPro func

2018-05-22 15:39:36.382 WARN TrackLog [0x000029fc] - [ internal WARN htrace_server_convert_msgstring_to_contextintls(493) ] detect input id error, trace_id span_id,this chain may not be tracked.

2018-05-22 15:39:36.383 WARN TrackLog [0x000029fc] - [ internal WARN htrace_server_receive(195) ] can not detect trace_id in context, this chain may not be tracked.

2018-05-22 15:39:36.383 TRACE TDWZLog [0x000029fc] 231 TDWZProtocol::DisConnect,TDWZProtocol::DisConnect

2018-05-22 15:39:37.502 TRACE TDWZLog [0x00002f10] 225 GetAlarmEventPro,End Get AlarmEventPro Func

2018-05-22 15:39:37.503 TRACE TDWZLog [0x000029fc] 241 TDWZProtocol::DisConnect,close socket

2018-05-22 15:39:37.503 TRACE TDWZLog [0x000029fc] 242 TDWZProtocol::DisConnect,Execute DisConnect function succeed.

登錄后復(fù)制

可以從該文件中看出一般日志文件中應(yīng)該含有的信息。

Part2日志級(jí)別和含義

Log4j是Apache的一個(gè)開(kāi)源項(xiàng)目,通過(guò)使用Log4j,我們可以控制日志信息輸出目的地是控制臺(tái)、文件、GUI組件甚至是套接口服務(wù)器;我們也可以控制每一條日志的輸出格式;通過(guò)定義每一條日志信息的級(jí)別,我們能夠更加細(xì)致地控制日志的生成過(guò)程。最令人感興趣的就是,這些可以通過(guò)一個(gè)配置文件來(lái)靈活地進(jìn)行配置,而不需要修改應(yīng)用的代碼。

2.1 Log4j的組成

Log4j由三個(gè)重要的組成構(gòu)成:日志記錄器(Loggers),輸出端(Appenders)和日志格式化器(Layout)。

2.1.1 Logger

控制要啟用或禁用哪些日志記錄語(yǔ)句,并對(duì)日志信息進(jìn)行級(jí)別限制

2.1.2 Appenders

指定了日志將打印到控制臺(tái)還是文件中.

2.1.3 Layout

控制日志信息的顯示格式。

2.2 日志級(jí)別

Log4j中將要輸出的Log信息定義了6種級(jí)別,依次為TRACE、DEBUG、INFO、WARN、ERROR和FATAL,當(dāng)輸出時(shí),只有級(jí)別高過(guò)配置中規(guī)定的 級(jí)別的信息才能真正的輸出,這樣就很方便的來(lái)配置不同情況下要輸出的內(nèi)容,而不需要更改代碼,非常方便快捷。

歡迎關(guān)注公眾號(hào)"終端研發(fā)部",查看更多干貨!

2.2.1 TRACE

TRACE designates finer-grained informational events than the DEBUG.Since:1.2.12,很低的日志級(jí)別,一般不會(huì)使用。TRACE一般跟蹤的是函數(shù)的調(diào)用,并且TRACE不應(yīng)該含有變量參數(shù),而僅能提示函數(shù)的調(diào)用關(guān)系。

2.2.2 DEBUG

一般用于細(xì)粒度級(jí)別上,對(duì)調(diào)試應(yīng)用程序非常有幫助,主要用于開(kāi)發(fā)過(guò)程中打印一些運(yùn)行信息。

2.2.3 INFO

INFO消息在粗粒度級(jí)別上突出強(qiáng)調(diào)應(yīng)用程序的運(yùn)行過(guò)程。打印一些你感興趣的或者重要的信息,這個(gè)可以用于生產(chǎn)環(huán)境中輸出程序運(yùn)行的一些重要信息,但是不能濫用,避免打印過(guò)多的日志。

2.2.4 WARN

WARN表示會(huì)出現(xiàn)潛在錯(cuò)誤的情形,有些信息不是錯(cuò)誤信息,但是也要給程序員一些提示。該級(jí)別表示程序會(huì)自動(dòng)調(diào)整到正常的狀態(tài),類似參數(shù)未傳入,使用了默認(rèn)的參數(shù),仍符合程序員預(yù)期之內(nèi)的情況。

2.2.5 ERROR

ERROR指出雖然發(fā)生錯(cuò)誤事件,但仍然不影響系統(tǒng)的繼續(xù)運(yùn)行。打印錯(cuò)誤和異常信息,如果不想輸出太多的日志,可以使用這個(gè)級(jí)別。一般在WARN之后的級(jí)別在打印錯(cuò)誤時(shí),應(yīng)該同時(shí)打印錯(cuò)誤碼。

2.2.6 FATAL

FATAL指出每個(gè)嚴(yán)重的錯(cuò)誤事件將會(huì)導(dǎo)致應(yīng)用程序的退出,這個(gè)級(jí)別比較高,重大錯(cuò)誤,程序無(wú)法恢復(fù),必須通過(guò)重啟程序來(lái)解決。

2.3 日志級(jí)別大小關(guān)系

日志級(jí)別就像開(kāi)關(guān)一樣,來(lái)決定哪些日志方法被調(diào)用,哪些不被調(diào)用。在log4j中,日志級(jí)別的關(guān)系如下所示:

ALLTRACEDEBUGINFOWARNERRORFATALOFF

設(shè)置了對(duì)應(yīng)的級(jí)別之后,日志框架就只調(diào)用大于等于這個(gè)級(jí)別的方法。Log4j建議只使用如下的四個(gè)界別

DEBUGINFOWARNERROR

Part3日志規(guī)范示例

模仿,抄寫是比較好的學(xué)習(xí)方式,借鑒前人撰寫日志的良好風(fēng)格以形成自己的風(fēng)格是不錯(cuò)的方式。下面是一些不錯(cuò)的日志記錄。

3.1 TRACE日志記錄示例

DRV_LOG_TRACE("Connect Execute start");

DRV_LOG_TRACE("Connect Execute finish");

DRV_LOG_TRACE("DisConnect func");

DRV_LOG_TRACE("Execute DisConnect function succeed.");

DRV_LOG_TRACE("Enter UploadEvent Func");

DRV_LOG_TRACE("extInfo = %s", Extension);

DRV_LOG_TRACE("Send a Msg ");

DRV_LOG_TRACE("- Connect Execute start");

DRV_LOG_TRACE("- Connect Execute finish");

DRV_LOG_TRACE("- Enter GetAlarmEventPro func");

DRV_LOG_TRACE("- Receive an info");

DRV_LOG_TRACE("- End Get AlarmEventPro Func");

DRV_LOG_TRACE("- DisConnect func");

DRV_LOG_TRACE("- Execute DisConnect function succeed.");

DRV_LOG_TRACE("- Enter UploadEvent Func");

DRV_LOG_TRACE("- Leave UploadEvent Func");

DRV_LOG_TRACE("- ============電網(wǎng)報(bào)警觸發(fā)");

DRV_LOG_TRACE("- ============開(kāi)始發(fā)送電流電壓值");

DRV_LOG_TRACE("- ============間隔超過(guò)分鐘再次發(fā)送電流電壓值");

登錄后復(fù)制

?

3.2 INFO日志記錄示例

DRV_LOG_INFO("- UpdataEvent nchal= %d,EventID = %d.",iChannelNo,nEventType);

DRV_LOG_INFO("- do not support doControl");

DRV_LOG_INFO("- channelId = %s, nStatusType = %d", channelId.c_str(), nStatusType);

登錄后復(fù)制

3.3 DEBUG日志記錄示例

DRV_LOG_DEBUG("- 輸出報(bào)警情況:電網(wǎng)編號(hào):%d,報(bào)警數(shù)量:%d,報(bào)警內(nèi)容:%s.",datas.data1.chn,datas.data1.alarm_num,datas.data1.alarms);

DRV_LOG_DEBUG("- 輸出報(bào)警情況:電網(wǎng)編號(hào):%d,報(bào)警數(shù)量:%d,報(bào)警內(nèi)容:%s.",datas.data2.chn,datas.data2.alarm_num,datas.data2.alarms);

DRV_LOG_DEBUG("- 輸出報(bào)警情況:電網(wǎng)編號(hào):%d,報(bào)警數(shù)量:%d,報(bào)警內(nèi)容:%s.",datas.data3.chn,datas.data3.alarm_num,datas.data3.alarms);

DRV_LOG_DEBUG("- 輸出報(bào)警情況:電網(wǎng)編號(hào):%d,報(bào)警數(shù)量:%d,報(bào)警內(nèi)容:%s.",datas.data4.chn,datas.data4.alarm_num,datas.data4.alarms);

DRV_LOG_DEBUG("- ============datas.data1.huab = %d",datas.data1.huab);

DRV_LOG_DEBUG("- ============datas.data1.hiab = %d",datas.data1.hiab);

DRV_LOG_DEBUG("- ============datas.data2.huab = %d",datas.data2.huab);

DRV_LOG_DEBUG("- ============datas.data2.hiab = %d",datas.data2.hiab);

DRV_LOG_DEBUG("- ============datas.data3.huab = %d",datas.data3.huab);

DRV_LOG_DEBUG("- ============datas.data3.hiab = %d",datas.data3.hiab);

DRV_LOG_DEBUG("- ============datas.data4.huab = %d",datas.data4.huab);

DRV_LOG_DEBUG("- ============datas.data4.hiab = %d",datas.data4.hiab);

DRV_LOG_DEBUG("- Alarm is : %s",szEvent.c_str());

DRV_LOG_DEBUG("- GetChannelExtInfo channelId=%s", channelId.c_str());

DRV_LOG_DEBUG("- nChan = %d, szInfo = %s", nChan, szInfo);

登錄后復(fù)制

?

3.4 WARN日志記錄示例

DRV_LOG_WARN("[0x%08x] - invaild event msg,discard it", DRV_INVALID_ARG);

DRV_LOG_WARN("[0x%08x] - Can't find channel by channelId");

DRV_LOG_WARN("[0x%08x] - [DWSdk.errorcode=0x%08x]Connect device failed", DRV_CONNECT_FAILED, sdkErrCode);

DRV_LOG_WARN("[0x%08x] - [DWSdk.errorcode=0x%08x]dw_start_receive failed", DRV_ERROR, sdkErrCode);

DRV_LOG_WARN("[0x%08x] - [DWSdk.errorcode=0x%08x]Communicate failed, socket recv error", DRV_ERROR, DW_SOCKET_RECV_ERROR);

DRV_LOG_WARN("[0x%08x] - [DWSdk.errorcode=0x%08xother error", DRV_ERROR, iGetResult);

DRV_LOG_WARN("[0x%08x] - [DWSdk.errorcode=0x%08xother error", DRV_ERROR, iGetResult);

DRV_LOG_WARN("[0x%08x] - SetEventCallBack should be called first", DRV_ERROR);

登錄后復(fù)制

3.5 ERROR日志記錄示例

DRV_LOG_ERROR("Init DwSDK filded;errCode=%d", initRet);

DRV_LOG_ERROR("Connect device failed");

DRV_LOG_ERROR("Create thread failed");

DRV_LOG_ERROR("dw_start_receive failed");

DRV_LOG_ERROR("Communicate failed, socket recv error");

DRV_LOG_ERROR("other errorerrCode=%d", iGetResult);

DRV_LOG_ERROR("SetEventCallBack should be called first");

DRV_LOG_ERROR("[0x%08x] - [DWSdk.errorcode=0x%08x]Init DwSDK filded", DRV_INIT_FAILED, initRet);

DRV_LOG_ERROR("- [HPR.errorcode=0x%08x]Create thread failed", HPR_GetLastError());

登錄后復(fù)制

上述代碼中[0x%08x]有下述作用:該語(yǔ)句出現(xiàn)于格式化輸出時(shí)的格式字符串中。形式為

"0x%08x"

其中,0x為普通字符,輸出的時(shí)候會(huì)原樣輸出為0x。%08x為整型以16進(jìn)制方式輸出的格式字符串,會(huì)把后續(xù)對(duì)應(yīng)參數(shù)的整型數(shù)字,以16進(jìn)制輸出。08的含義為,輸出的16進(jìn)制值占8位,不足部分左側(cè)補(bǔ)0。于是,如果執(zhí)行

網(wǎng)頁(yè)名稱:java日志源代碼,java的日志類
文章出自:http://chinadenli.net/article8/dsgopip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化標(biāo)簽優(yōu)化虛擬主機(jī)商城網(wǎng)站網(wǎng)站內(nèi)鏈網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)