導航:首頁 > 編程語言 > java日誌模塊

java日誌模塊

發布時間:2022-05-19 07:51:39

A. java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 我在啟動tomcat的出現的問題

缺少common-logging.jar包
把包放到你web項目的WEB-INF/lib文件夾
不加入的話你的項目就不會自動列印log,而且還可能出現頁面錯誤

B. JAVA的常用的類庫有哪些

一、日誌相關類庫

日誌庫是很常見的,因為你在每一個項目中都需要他們。列印日誌是伺服器端應用中最重要的事情,因為日誌是你了解你的程序發生了什麼的唯一途徑。盡管JDK附帶自己的日誌庫,但是還是有很多更好的選擇可用,例如 Log4j 、 SLF4j 和 LogBack。

Java開發人員應該熟悉日誌記錄的利弊, 並且了解為什麼SLF4J要比Log4J要好。

二、JSON解析庫

在當今世界的web服務和物聯網中(IoT),JSON已經取代了XML,成為從客戶端到伺服器傳送信息的首選協議。有一個好消息和一個壞消息。壞消息 是JDK沒有提供JSON庫。好消息是有許多優秀的第三方庫可以用來解析和創建JSON消息,如 Jackson 和 Gson

一個Java web開發人員應該熟悉Jackson 和 Gson這兩種中的至少一種庫。

三、單元測試庫

單元測試技術的使用,是區分一個一般的開發者和好的開發者的重要指標。程序員經常有各種借口不寫單元測試,但最常見的借口就是缺乏經驗和知識。常見的單測框架有 JUnit , Mockito 和PowerMock 。

《2020最新Java基礎精講視頻教程和學習路線!》


四、通用類庫

有幾個很好的第三方通用庫可供Java開發人員使用,例如 Apache Commons 和 Google Guava 。我會經常在我的代碼中使用這些通用類庫,因為這些類庫都是經過無數開發者實踐過的,無論是實用性還是在性能等方面都是最佳的。

五、Http 庫

我不是很喜歡JDK的一個重要原因就包括他們缺乏對HTTP的支持。雖然可以使用java.net包類,但是這和直接使用像 Apache HttpClient 和 HttpCore 等開源類庫比起來麻煩太多了。

盡管JDK 9將開始HTTP 2.0,也對HTTP的支持做了優化,但是我還是強烈建議所有的Java開發人員熟悉流行的HTTP處理類庫,例如HttpClient和HttpCore HTTP等庫。

六、XML解析庫

市面上有很多XML解析的類庫,如 Xerces , JAXB , JAXP , Dom4j , Xstream 等。 Xerces2是下一代高性能,完全兼容的XML解析工具。Xerces2定義了 Xerces Native Interface (XNI)規范,並提供了一個完整、兼容標準的 XNI 規范實現。該解析器是完全重新設計和實現的,更簡單以及模塊化。

七、Excel讀寫庫

許多應用程序需要提供把數據導出到Excel的功能,如果你要做相同的Java應用程序,那麼你需要 Apache POI API 。

這是一個非常豐富的類庫,你可以從Java程序讀寫XLS文件。

八、位元組碼庫

如果你正在編寫一個框架或者類庫。有一些受歡迎的位元組碼庫如 javassist 和 Cglib Nodep 可以供你選擇,他們可以讓你閱讀和修改應用程序生成的位元組碼。

Javassist使得JAVA位元組碼操作非常簡單。它是一個為編輯Java位元組碼而生的類庫。 ASM 是另一個有用的位元組碼編輯庫。

九、資料庫連接池庫

如果你的Java應用程序與資料庫交互不是使用資料庫連接池庫的話,那麼你就大錯特錯了。因為在運行時創建資料庫連接非常耗時並且會拖慢你的程序。所以牆裂建議使用,有些好用的連接池可供選擇,如 Commons Pool 和 DBCP 。

在web應用程序中,web伺服器通常提供了這些功能。但是在java項目中需要把資料庫連接池的類庫導入到應用中。

十、消息傳遞庫

像日誌和資料庫連接池一樣,消息傳遞也是很多實際的Java項目中必備的。Java提供了JMS Java消息服務,但這不是JDK的一部分,你需要單獨的引入jms.jar。類似地,如果您准備使用第三方消息傳遞協議, Tibco RV 是個不錯的選擇。

十一、PDF處理庫

除了Excel和Word,PDF也是一種常用的文件格式。如果你的應用程序要支持PDF格式的文件處理,你可以使用 iText 和 Apache FOP 類庫。兩者都提供了非常有用的PDF處理功能。

十二、日期和時間庫

在Java之前,JDK的日期和時間庫一直被人們所詬病,比如其非線程安全的、不可變的、容易出錯等。很多開發人員會選擇更好用的 JodaTime 類庫。

但是在Java8推出之後,我們就可以徹底放棄JodaTime了,因為Java 8提供了其所有功能。但是,如果你的代碼運行在一個低版本的JDK中,那麼JodaTime還是值得使用的。

十三、集合類庫

雖然JDK有豐富的集合類,但還是有很多第三方類庫可以提供更多更好的功能。如 Apache Commons Collections 、 Goldman Sachs collections 、 Google Collections 和 Trove 。Trove尤其有用,因為它提供所有標准Collections 類的更快的版本以及能夠直接在原語(primitive)(例如包含int 鍵或值的Map 等)上操作的Collections 類的功能。

FastUtil是另一個類似的API,它繼承了Java Collection Framework,提供了數種特定類型的容器,包括映射map、集合set、列表list、優先順序隊列(prority queue),實現了java.util包的標准介面(還提供了標准類所沒有的雙向迭代器),還提供了很大的(64位)的array、set、list,以及快速、實用的二進制或文本文件的I/O操作類。

十四、郵件API

javax.mail 和 Apache Commons Email 提供了發送郵件的api。它們建立在JavaMail API的基礎上,提供簡化的用法。

十五、HTML解析庫

和XML與JSON類似,HTML是另外一種我們可能要打交道的傳輸格式。值得慶幸的是,我們有jsoup可以大大簡化Java應用程序使用HTML。你不僅可以使用 JSoup 解析HTML還可以創建HTML文檔。

十六、加密

Apache Commons家族中的 Commons Codec 就提供了一些公共的編解碼實現,比如Base64, Hex, MD5,Phonetic and URLs等等。

十七、嵌入式SQL資料庫庫

我真的是非常喜歡像 H2 這種內存資料庫,他可以嵌入到你的Java應用中。在你跑單測的時候如果你需要一個資料庫,用來驗證你的SQL的話,他是個很好的選擇。順便說一句,H2不是唯一嵌入式DB,你還有 Apache Derby 和 HSQL 可供選擇。

十八、JDBC故障診斷庫

有不錯的JDBC擴展庫的存在使得調試變得很容易,例如P6spy,這是一個針對資料庫訪問操作的動態監測框架,它使得資料庫數據可無縫截取和操縱,而不必對現有應用程序的代碼作任何修改。 P6Spy 分發包包括P6Log,它是一個可記錄任何 Java 應用程序的所有JDBC事務的應用程序。其配置完成使用時,可以進行數據訪問性能的監測。

十九、序列化庫

Google Protocol Buffer是一種輕便高效的結構化數據存儲格式,可以用於結構化數據串列化,或者說序列化。它很適合做數據存儲或 RPC 數據交換格式。可用於通訊協議、數據存儲等領域的語言無關、平台無關、可擴展的序列化結構數據格式。目前提供了 C++、Java、Python 三種語言的 API。

二十、網路庫

一些有用的網路庫主要有 Netty 的和 Apache MINA 。如果您正在編寫一個應用程序,你需要做的底層網路任務,可以考慮使用這些庫。

這都是每位Java開發人員應該熟悉的,並且十分有用的庫。Java生態系統非常龐大的,你會發現有很多不同的類庫可以做不同的事情。每個你想到的東西,都可能有一個庫可以做到。

要相信,你遇到的問題,肯定不止你一個遇到過。
要相信,也許有很多人比你更勤奮。
要相信,你用或不用,輪子就在那裡。
要相信,使用這些類庫,你和你的代碼都會變得更好。

原文鏈接:https://blog.csdn.net/u011001084/article/details/79216958

C. java如何做系統操作日誌

手頭沒有代碼,用文字書寫比較麻煩,說說思路吧:
1):操作日誌與每一個人的系統許可權密切相關,在前期定義許可權的時候,必須區分好每一個用戶級別的許可權(一級菜單與菜單下具體功能),需要用多張表進行許可權標識,並且建立各個表之間的關聯關系(具體設置此處略)。
2):當用戶點擊系統內每一個功能(每一個功能按鈕)的時候,一方面實現按鈕功能(新建按鈕實現新建功能),另外一方面將此處的功能名稱、模塊名稱、用戶名、時間等信息一並存儲到用戶操作表裡面。
3):在用戶操作查詢頁面輸入相應的條件,在用戶操作表內查詢即可。

D. java關於存取資料庫後做日誌記錄問題,不是用log4j

提供建議如下:
1.每個需要被日誌管理的資料庫映射類都加一個功能名稱屬性並賦值。
2.封裝hibernate中提供的save方法(增、改)和delete方法(刪)。
在save方法中先判斷傳過來的對象的id,有id為更改,無id為新增。然後向日誌管理類添加對象。操作為新增或更改,功能為對象.get功能名稱,其他如操作人員及時間等應該有公共類可以取得.
刪除方法類似;
大概思路應該就是這樣.

E. java開發怎麼做日誌功能 就是記錄用戶每一步的操作具體做什麼了

細說起來,還算是比較麻煩的。大概給你個思路:
要記錄操作日誌,還能查看,那肯定得需要把操作記錄保存起來——直接保存到資料庫即可。
日誌管理模塊的話,因為有上邊的日誌記錄了,做個刪查的功能應該好做。這塊就不細說了。

最主要的地方:怎樣記錄日誌。思路如下:
先分析好需要記錄哪些日誌,這個一般都記錄新增、修改、刪除數據的操作。另外有些特殊的查詢操作也要記錄。

其實是如何記錄。一開始提到了日誌入庫。現在有個問題是什麼時候來做個邏輯。這個時機一般也是訪問者發起操作時就開始做。比如說在action或者servlet或者controller的對應的方法體里開始記錄。當然這需要寫好日誌入庫的邏輯。

其實這個日誌管理也是個比較完整的功能塊,甚至可以是個小系統。也有許多小細節和解決方案。思路有了,如何實現就根據情況而定吧。

F. Java企業開發的日誌究竟該怎麼記

細說起來,還算是比較麻煩的。大概給你個思路: 要記錄操作日誌,還能查看,那肯定得需要把操作記錄保存起來——直接保存到資料庫即可。 日誌管理模塊的話,因為有上邊的日誌記錄了,做個刪查的功能應該好做。

G. java如何更好的設計操作日誌模塊

你可以建立一個 類。實現方法 專門用來記錄用戶操作的,然後使用spring AOP 來捕捉 用戶操作表 調用的業務方法;

H. 如何自建appender擴展Log4j框架

1.log4j 概述
log4j 環境包括三個主要組件:
logger(日誌記錄器):控制要啟用或禁用哪些日誌記錄語句。可以對日誌記錄器指定如下級別: ALL 、 DEBUG 、 INFO 、 WARN 、 ERROR , FATAL 。
layout(布局):根據用戶的願望格式化日誌記錄請求。
appender:向目的地發送格式化的輸出。
2.理解 appender
log4j 框架允許向任何日誌記錄器附加多個 appender。可以在任何時候對某個日子記錄器添加(或刪除)appender。附隨 log4j 分發的 appender 有多個,包括:
ConsoleAppender;FileAppender;SMTPAppender ;JDBCAppender;JMSAppender;NTEventLogAppender;SyslogAppender。
也可以創建自己的自定義 appender。
3.本工程設計的目標
通過自建appender類,來實現:
[1]在控制台輸出日誌;
[2]在log文件輸出日誌;
[3]在應用程序中建立日誌模塊(在UI層表現為建立一個日誌面板),輸出日誌;
[4]對於不同包路徑下的日誌獨立輸出(在UI層表現為分不同的面板輸出)。
4.預備知識
你可以在下面2篇文章中找到Log4j的相關基礎介紹。
Log4j配置說明
Log4j使用實例
5.項目文件分布與效果
文件分布如圖一所示。我們對於com.log.one包下的所有java文件中的日誌信息輸出到log one模塊(圖二);對於com.log.two包下的所有java文件中的日誌信息輸出到log two模塊(圖四)。本文只象徵性的建立了兩個測試文件,分別放在兩個包下。
com.log.one.LogTestOne.java
public class LogTestOne {
private final static Logger log = Logger.getLogger(LogTestOne.class);
public void doLog(){
log.debug("TestOne debug");
log.info("TestOne info");
log.warn("TestOne warn");
log.error("TestOne error");
log.fatal("TestOne fatal");
}
}

com.log.two.LogTestTwo.java
public class LogTestTwo {
private final static Logger log = Logger.getLogger(LogTestTwo.class);
public void doLog() {
log.debug("TestTwo debug");
log.info("TestTwo info");
log.warn("TestTwo warn");
log.error("TestTwo error");
log.fatal("TestTwo fatal");
}
}

圖一

對於應用程序中的日誌模塊,提供一些UI層的基本操作,包括清空(圖二,圖四);變灰(圖三);復制到粘貼板。
The Main Text象徵性的表示主應用程序的所有操作。

圖二

圖三

圖四

同時在控制台輸出所有日誌信息。(圖五)

圖五

同時在文本文件中輸出所有日誌信息。(圖六)

圖六
6.log4j.xml
本項目使用如下日誌配置文件,將其放在項目的classpath下。
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<!-- =================== -->
<!-- Appenders -->
<!-- =================== -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="Target" value="System.out"/>
<param name="Threshold" value="DEBUG"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%-5p %l%m%n"/>
</layout>
</appender>

<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="File" value="logui.log"/>
<param name="Threshold" value="INFO"/>
<param name="Append" value="false"/>
<param name="MaxFileSize" value="5000KB"/>
<param name="MaxBackupIndex" value="50"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/>
</layout>
</appender>

<appender name="ONE" class="com.log.utils.LogOneAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
</appender>

<appender name="TWO" class="com.log.utils.LogTwoAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
</appender>

<!-- =============== -->
<!-- Loggers -->
<!-- =============== -->
<logger name="com.log.one">
<level value="DEBUG" />
<appender-ref ref="ONE"/>
<appender-ref ref="CONSOLE"/>
</logger>

<logger name="com.log.two">
<level value="DEBUG" />
<appender-ref ref="TWO"/>
<appender-ref ref="CONSOLE"/>
</logger>

<root>
<priority value="INFO" />
<appender-ref ref="FILE"/>
</root>
</log4j:configuration>
這里除常規的CONSOLE和FILE appender,增加兩個appender,ONE和TWO,分別通過自建類LogOneAppender和LogTwoAppender定義。
public class LogOneAppender extends AppenderSkeleton{
public LogOneAppender() {}
protected void append(LoggingEvent event) {
LogUI.log(event);
}
public void close() {}
public boolean requiresLayout() {
return false;
}
}

public class LogTwoAppender extends AppenderSkeleton{
public LogTwoAppender() {}
protected void append(LoggingEvent event) {
LogUI.log(event);
}
public void close() {}
public boolean requiresLayout() {
return false;
}
}
在logger中通過logger name,com.log.one和com.log.two指定到上述的appender。
7.主界面設計LogUI.java
主面板為frame,其中嵌入LogPanel。log類的實體是一個Log4Jmonitor類的實例,通過它的addLogArea方法可以添加日誌模塊,其中的第二個參數對應log4j配置文件中的logger name。這里還提供一個Cache功能,即如果在主類(LogUI)或日誌類(Log4Jmonitor)還沒有實例化之前,已經有日誌信息,則進行緩存。
public class LogUI {
private static LogUI instance;
private static JFrame frame;
private Log4JMonitor logMonitor;
private static List<Object> logCache = new ArrayList<Object>();
public LogUI() {
instance = this;
}
///////////////////////UI
private void buildUI() {
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.getContentPane().add(buildContentPanel(), BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setSize(100, 75);
}

private Component buildContentPanel() {
JSplitPane contentSplit = new JSplitPane();
contentSplit.setTopComponent(new JTextArea("The Main Text"));
contentSplit.setBottomComponent(buildLogPanel());
contentSplit.setDividerLocation(550);
contentSplit.setResizeWeight(1);
return contentSplit;
}

private Component buildLogPanel() {
logMonitor = new Log4JMonitor();
logMonitor.addLogArea("log one", "com.log.one", true).setLevel(
Level.DEBUG);
logMonitor.addLogArea("log two", "com.log.two", true).setLevel(
Level.DEBUG);
for (Object message : logCache) {
logMonitor.logEvent(message);
}
return logMonitor;
}

public void show() {
buildUI();
frame.setVisible(true);
}
////////////////////Log
public static synchronized void log(final Object msg) {
if (instance == null || instance.logMonitor == null) {
logCache.add(msg);
return;
}
if (SwingUtilities.isEventDispatchThread()) {
instance.logMonitor.logEvent(msg);
} else {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
instance.logMonitor.logEvent(msg);
}
});
}
}
//////////////////Test Cases
public void doTests(){
LogTestOne one=new LogTestOne();
one.doLog();
LogTestTwo two=new LogTestTwo();
two.doLog();
}

public static void main(String[] args) throws Exception {
frame = new JFrame("LogUI ");
LogUI logUi = new LogUI();
logUi.show();
logUi.doTests();
}
}
8.log類的實體Log4Jmonitor
通過此類來建立日誌模塊。其中用到的JlogList.java(見附件)提供對日誌模塊的所有基本功能。addLogArea方法增加日誌模塊。logEvent方法對輸出的日誌事件類型做出判斷,對該日誌所屬的日誌模塊(本實例為com.log.one和com.log.two)做出判斷。
public class Log4JMonitor extends JTabbedPane {
private JLogList defaultLogArea;
public Log4JMonitor() {
super(JTabbedPane.BOTTOM, JTabbedPane.SCROLL_TAB_LAYOUT);
}
public JLogList addLogArea(String title, String loggerName,
boolean isDefault) {
JLogList logArea = new JLogList(title);
logArea.addLogger(loggerName, !isDefault);
addTab(title, logArea);
if (isDefault)
defaultLogArea = logArea;
return logArea;
}
public void logEvent(Object msg) {
if (msg instanceof LoggingEvent) {
LoggingEvent event = (LoggingEvent) msg;
String loggerName = event.getLoggerName();
for (int c = 0; c < getTabCount(); c++) {
Component tabComponent = getComponentAt(c);
if (tabComponent instanceof JLogList) {
JLogList logArea = (JLogList) tabComponent;
if (logArea.monitors(loggerName)) {
logArea.addLine(msg);
}
}
}
} else if (defaultLogArea != null) {
defaultLogArea.addLine(msg);
}
}
public boolean hasLogArea(String loggerName) {
for (int c = 0; c < getTabCount(); c++) {
Component tabComponent = getComponentAt(c);
if (tabComponent instanceof JLogList) {
JLogList logArea = (JLogList) tabComponent;
if (logArea.monitors(loggerName)) {
return true;
}
}
}
return false;
}
}

I. java 寫系統日誌,對後台一些增加修改功能進行記錄,並保存響應的值,有什麼好的設計思路或設計模式嗎

每一個 domain類 類都寫一個構造方法

public GuestFacilityPartInout(String id, String peijianId {
this.id = id; this.peijianId = peijianId; }寫進所有值
然後寫一個toString方法
把你所有欄位屬性都記成一個字元串
父類增刪改的時候相應記下這個 字元串及模塊信息

J. java web 模仿QQ空間的日誌評論模塊

直接寫入資料庫然後顯示就好了,搞個級聯添加或者資料庫主外鍵

閱讀全文

與java日誌模塊相關的資料

熱點內容
二次元表格編程 瀏覽:20
plc編程器保停 瀏覽:963
如何降低伺服器的內存佔用率 瀏覽:868
阿里雲伺服器是個什麼意思 瀏覽:817
國內最好的數控編程培訓學校 瀏覽:13
222乘104列是演算法 瀏覽:159
程序員溝通正確姿勢 瀏覽:969
魔玩app怎麼視頻推廣 瀏覽:960
程序員抽獎送禮 瀏覽:458
北京java程序員薪資 瀏覽:658
如何創建網路平台或者app 瀏覽:355
python隨機數生成控制概率 瀏覽:235
壓縮機並聯運行 瀏覽:899
兩位單片機 瀏覽:63
四川音樂類投檔線的演算法 瀏覽:650
建行app如何改轉賬卡 瀏覽:26
android開發升級 瀏覽:299
要火社區app進不去怎麼辦 瀏覽:826
安卓手機上的自定義功能怎麼用 瀏覽:230
方舟伺服器怎麼購買進去資格 瀏覽:44