導航:首頁 > 源碼編譯 > liblogger編譯

liblogger編譯

發布時間:2022-05-10 14:58:25

⑴ 錯誤: 找不到或無法載入主類 Djava.library.path=.usr.hadoop.hadoop-2.8.0.lib:.

最近,打算Hbase建表用snappy壓縮時,碰到一些Hadoop本地庫的問題。其實這些問題是一直存在的,只是不影響正常使用,就沒有引起重視。這次希望徹底解決以下問題:
問題一:執行start-dfs.sh時出現以下日誌
xxxx: Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/hadoop-2.4.0/lib/native/libhadoop.so which might have disabled stack guard. The VM will try to fix the stack guard now.
xxxx: It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
這是因為官網提供的版本本地庫是32位的,在64位主機環境下無法執行。需要下載hadoop源碼進行編譯(如何編譯源碼可以上網搜索),編譯成功後,找到native下的文件拷貝到${HADOOP_HOME}/lib/native目錄下即可。
問題二:執行start-dfs.sh時出現以下日誌
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
在網上找到的所有文章中,都是說在hadoop-env.sh中加入以下兩行配置:
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/"
但是在測試過程中,加入以上配置還是會提示告警信息,說明本地庫未載入成功。
開啟debug:
export HADOOP_ROOT_LOGGER=DEBUG,console
執行start-dfs.sh,發現以下日誌:
DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: Java.lang.UnsatisfiedLinkError: no hadoop in java.library.path
從日誌中可以看出hadoop庫不在java.library.path所配置的目錄下,應該是java.library.path配置的路徑有問題。在hadoop-env.sh中重新配置:
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native/"
執行start-dfs.sh,告警信息不再顯示。經測試,其實只需export HADOOP_OPTS即可解決問題。
驗證本地庫是否載入成功:hadoop checknative
15/08/18 10:31:17 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
15/08/18 10:31:17 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop: true /usr/local/hadoop-2.4.0/lib/native/libhadoop.so.1.0.0
zlib: true /lib64/libz.so.1
snappy: true /usr/local/hadoop-2.4.0/lib/native/Linux-amd64-64/libsnappy.so.1
lz4: true revision:99
bzip2: true /lib64/libbz2.so.1
以上說明本地庫已經載入成功。

⑵ log4j的使用步驟

一、使用步驟:
第一步
加入log4j-1.2.8.jar(可以選擇log4j的更高版本)到lib下。
第二步
在CLASSPATH下建立log4j.properties。內容如下(數字為行號):
1 log4j.rootCategory=INFO, stdout , R
2
3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
5 log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
6
7 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
8 log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log
9 log4j.appender.R.layout=org.apache.log4j.PatternLayout
10 log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
11
12 log4j.logger.com.neusoft=DEBUG
13 log4j.logger.com.opensymphony.oscache=ERROR
14 log4j.logger.net.sf.navigator=ERROR
15 log4j.logger.org.apache.commons=ERROR
16 log4j.logger.org.apache.struts=WARN
17 log4j.logger.org.displaytag=ERROR
18 log4j.logger.org.springframework=DEBUG
19 log4j.logger.com.ibatis.db=WARN
20 log4j.logger.org.apache.velocity=FATAL
21
22 log4j.logger.com.canoo.webtest=WARN
23
24 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
25 log4j.logger.org.hibernate=DEBUG
26 log4j.logger.org.logicalcobwebs=WARN
第三步
相應的修改其中屬性,修改之前就必須知道這些都是干什麼的,在第二部分講解。
第四步
在要輸出日誌的類中加入相關語句:
定義屬性:static Logger logger = Logger.getLogger(LogDemo.class); //LogDemo為相關的類
在相應的方法中:
if (logger.isDebugEnabled()){
logger.debug(「System …..」);
二、log4j的簡單介紹:
Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日誌信息輸送的目的地是控制台、文件、GUI組件,甚至是套介面伺服器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌信息的級別,我們能夠更加細致地控制日誌的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。
三、參考資料:
http://ke..com/link?url=6PYC2iFZ6PPRStX30CayDL4un_UUtsh9Nfm-hcbLiMBVjygQQNActSKMmv2Z84r-V7DeQj7e4nBF8CnfBwxAHq

⑶ tomcat裡面的文件夾代表謝什麼

tomcat下有9個目錄,分別是bin,common,conf,logs,server,shared,temp,webapps,work 目錄,現在對每一目錄做介紹。

tomcat根目錄在tomcat中叫<CATALINA_HOME>,文章中把tomcat解壓後在c:/下。

1.<CATALINA_HOME>/bin: 存放各種平台下啟動和關閉Tomcat的腳本文件。其中有個檔是catalina.bat,打開這個windos配置文件,在非注釋行加入JDK路徑,例如 : SET JAVA_HOME=C:j2sdk1.4.2_06 保存後,就配置好tomcat環境了。 startup.bat是windows下啟動tomcat的文件,shutdown.bat是關閉tomcat的文件。

2.<CATALINA_HOME>/common: 在common目錄下的lib目錄,存放Tomcat伺服器和所有web應用都能訪問的JAR?。

3.<CATALINA_HOME>/shared: 在shared目錄下的lib目錄,存放所有web應用能訪問的,但Tomcat不能訪問的JAR?。

4.<CATALINA_HOME>/server: 在server/webapps目錄中,存放Tomcat自帶的兩個APP-admin和manager應用,使用來管理Tomcat-web服務用的。在server/lib目錄中,存放tomcat伺服器所需要的各,web應用不能訪問種jar?。

5.<CATALINA_HOME>/work : Tomcat把各種由jsp生成的servlet文件放在這個目錄下。work這個文件夾下面的東西建議你去看看就可以明白了 那是JSP文件編譯成.java->.classes

6.<CATALINA_HOME>/temp : 臨時活頁夾,Tomcat運行時候存放臨時文件用的。

7.<CATALINA_HOME>/logs : 存放Tomcat的日誌文件

8.<CATALINA_HOME>/conf : Tomcat的各種配置文件, tomcat啟動的時候需要讀取的配置文件:server.xml(tomcat主要配置文件)、web.xml和tomcatat-users.xml、catalina.policy(安全策略文件)等。修改了以後需要重啟tomcat才能生效.最重要的是 server.xml;配置tomcat組件的XML文件server.XML其中包括

I.頂層類元素[Top Level Elements]: 位於整個配置文件的頂層, 包括<Server>和<Service>;

II.連接器類元素[Connectors ]: 客戶和服務(容器類元素)間的通訊介面。接受客戶請求,返回響應結果;<Connector>

II.容器類元素[Containers]: 處理客戶請求並且生成響應結果,包含3個:<Engine> <Host> <Context>

IV.嵌套類元素[Nested Components]: 可以加入到容器中的元素,包括:<logger> <Valve><Realm>等

一個<Server>包含一個或多個<Service>,一個<Service>包含唯一一個<Engine>和一個或多個<Connector>,多個<Connector>共享一個<Engine>;一個<Engine>包含多個<Host>,每個<Host>定義一個虛擬主機,包含一個或多個web應用<Context>; <Context>元素是代表一個在虛擬主機上運行的Web應用。<Context>標簽的描述

Please note that for tomcat 5.x, unlike tomcat 4.x, it is NOT recommended to place <Context> elements directly in the server.xml file. Instead, put them in the META-INF/context.xml directory of your WAR file or the conf directory as described above.
server.xml配置簡介
下面是這個文件中的基本配置信息,更具體的配置信息見tomcat的文檔
server:
port 指定一個埠,這個埠負責監聽關閉tomcat的請求
shutdown 指定向埠發送的命令字元串
service:
name 指定service的名字
Connector (表示客戶端和service之間的連接):
port 指定伺服器端要創建的埠號,並在這個斷口監聽來自客戶端的請求
minProcessors 伺服器啟動時創建的處理請求的線程數
maxProcessors 最大可以創建的處理請求的線程數
enableLookups 如果為true,則可以通過調用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若為false則不進行DNS查詢,而是返回其ip地址
redirectPort 指定伺服器正在處理http請求時收到了一個SSL傳輸請求後重定向的埠號
acceptCount 指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理
connectionTimeout 指定超時的時間數(以毫秒為單位)
Engine (表示指定service中的請求處理機,接收和處理來自Connector的請求):
defaultHost 指定預設的處理請求的主機名,它至少與其中的一個host元素的name屬性值是一樣的
Context (表示一個web應用程序,通常為WAR文件,關於WAR的具體信息見servlet規范):
docBase 應用程序的路徑或者是WAR文件存放的路徑
path 表示此web應用程序的url的前綴,這樣請求的url為http://localhost:8080/path/****
reloadable 這個屬性非常重要,如果為true,則tomcat會自動檢測應用程序的/WEB-INF/lib 和/WEB-INF/classes目錄的變化,自動裝載新的應用程序,我們可以在不重起tomcat的情況下改變應用程序
host (表示一個虛擬主機):
name 指定主機名
appBase 應用程序基本目錄,即存放應用程序的目錄
unpackWARs 如果為true,則tomcat會自動將WAR文件解壓,否則不解壓,直接從WAR文件中運行應用程序
Logger (表示日誌,調試和錯誤信息):
className 指定logger使用的類名,此類必須實現org.apache.catalina.Logger 介面
prefix 指定log文件的前綴
suffix 指定log文件的後綴
timestamp 如果為true,則log文件名中要加入時間,如下例:localhost_log.2001-10-04.txt
Realm (表示存放用戶名,密碼及role的資料庫):
className 指定Realm使用的類名,此類必須實現org.apache.catalina.Realm介面
Valve (功能與Logger差不多,其prefix和suffix屬性解釋和Logger 中的一樣):
className 指定Valve使用的類名,如用org.apache.catalina.valves.AccessLogValve類可以記錄應用程序的訪問信息
directory 指定log文件存放的位置
pattern 有兩個值,common方式記錄遠程主機名或ip地址,用戶名,日期,第一行請求的字元串,HTTP響應代碼,發送的位元組數。combined方式比common方式記錄的值更多

注意:
默認的server.xml中,Realm元素只設置了一個className屬性,但此文件中也包含幾個通過JDBC連接到資料庫進行驗證的示例(被注釋掉了),通過Realm元素我們可以實現容器安全管理(Container Managed Security)。

還有一些元素,如Parameter,loader,你可以通過tomcat的文檔獲取這些元素的信息。

9.<CATALINA_HOME>/webapps: web應用的發布目錄,把 java開發的web站點或war文件放入這個目錄下就可以通過tomcat伺服器訪問了。
在絕大多數資料上,都只提到了conf/server.xml以及context下面的 WEB-INF/web.xml,但我發現,有時,在server.xml上面沒有配置的內容,tomcat也運行著,後來發現,原來除了這兩處配置外,還有一處重要的配置文件,

在TOMCAT_HOME/conf/Catalina/下面(Catalina是server.xml里的engine的名稱),也是一些關鍵的配置文件,每個主機(server.xml里的Host),在這里有一個目錄,每個主機(Host)里的一個context在該主機目錄下有一個對應的xml文件,比如,根目錄對應ROOT.xml,其它名為test的context對應test.xml。

TOMCAT_HOME/conf/Catalina/hostname/context1.xml 相當於在server.xml中的Catalina引擎下的hostname主機下配置context1WEB應用。在目錄里配置,和在 server.xml里配置效果是一樣的,Tomcat自帶的admin,自動將所有context轉到目錄下配置,而不是集中在server.xml。
10、如何新建虛擬目錄?
修改 Tomcat安裝目錄//conf//server.xml ,在下列行前
</Host>
</Engine>
添加下列行:
<Context path="/my" docBase="c://myjsp//test" debug="0" reloadable="true">
</Context>
表示增加虛擬目錄 my,對應物理目錄位置c://myjsp//test,若存在c://myjsp//test//hello.jsp,則下列地址可訪問:
htpp://localhost:8080/my/hello.jsp
修改server.xml後,需要重新啟動tomcat.

⑷ log4cpp:logger有什麼函數

C++日誌庫,log4cplus,log4cpp使用資料手冊
1 下載log4cpp並解壓。
2 打開\log4cpp-0.3.4b\msvc6\msvc6.dsw
編譯log4cpp工程Release版。
3 將編譯後的log4cpp.lib復制到VC的Lib目錄中。
4 將頭文件的目錄log4cpp-0.3.4b\include\log4cpp\
復制到VC的Include目錄.
(或者添加log4cpp-0.3.4b\include到VC的Include環境變數)
5 目標工程包含庫
log4cpp.lib ws2_32.lib
復制到VC的Lib目錄.
(要選擇庫連接方式相同的庫)
6 包含頭文件
日誌記錄
#include <log4cplus/logger.h>
日誌配置讀取
#include <log4cplus/consoleappender.h>
NDC
#include <log4cplus/loglevel.h>
日誌代碼
每個類可以有自己的類別(log4cpp::Category),可以在配置文件中添加該類別並設置日誌級別。
所有的log4cpp::Category都使用同一個Appender,不同的Category配置為不同的日誌級別,就可以控制日誌輸出的范圍。
一般只使用四個記錄日誌級:DEBUG,INFO,WARN,ERROR
如:
log4cpp::Category::getRoot().info("Now run line %d", __LINE__);

或使用非根類別
log4cpp::Category::getInstance("MyCat").info("Now run line %d", __LINE__);

使用流:
log4cpp::Category::getInstance("main_cat").infoStream()
<< "This will show up as "
<< 1 << " emergency message"
<< log4cpp::CategoryStream::ENDLINE;

具體的函數說明見api文檔.
7 讀取配置代碼
讀取log配置文件,應在log4cpp靜態成員初始化之後。
如在CXXXApp::InitInstance()中
try
{
log4cpp::PropertyConfigurator::configure("log.ini");
}
catch (log4cpp::ConfigureFailure e)
{
log4cpp::Category::getRoot().warn(e.what());
}

⑸ java 怎麼封裝logger

Logger所對應的屬性文件在安裝jdk目錄下的jre/lib/logging.properties
logging.properties文件中的
handlers= java.util.logging.ConsoleHandler 將日誌內容輸出到控制台
handlers= java.util.logging.FileHandler 將日誌文件輸出到文件中
handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler 將日誌內容同時輸出到控制台和文件中

# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO //日誌輸出級別

java.util.logging.FileHandler.pattern = %h/java%u.log 為生成的輸出文件名稱指定一個模式。
模式由包括以下特殊組件的字元串組成,則運行時要替換這些組件:
"/" 本地路徑名分隔符
"%t" 系統臨時目錄
"%h" "user.home" 系統屬性的值
"%g" 區分循環日誌的生成號
"%u" 解決沖突的惟一號碼
"%%" 轉換為單個百分數符號"%"
如果未指定 "%g" 欄位,並且文件計數大於 1,那麼生成號將被添加到所生成文件名末尾的小數點後面。

java.util.logging.FileHandler.limit = 50000 限制文件的大小,以位元組為單位
java.util.logging.FileHandler.count = 1 指定有多少輸出文件參與循環(默認為 1)。
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 指定要使用的 Formatter 類的名稱(默認為java.util.logging.XMLFormatter)。 另外一個是:java.util.logging.SimpleFormatter。XMLFormatter是以xml樣式輸出,SimpleFormatter是以普通樣式輸出。
java.util.logging.FileHandler.append 指定是否應該將 FileHandler 追加到任何現有文件上(默認為 false)。

⑹ 如何實現log4cxx日誌輸出方式

Log4cxx是開放源代碼項目Apache Logging Service的子項目之一,用於為C++程序提供日誌功能,以便開發者對目標程序進行調試
和審計。本文對log4cxx的使用及配置進行介紹,並給出一個可以快速開始的實例。最後,針對日誌服務給出一些實踐方面的建議。
1. 介紹
Log4cxx是開放源代碼項目Apache Logging Service的子項目之一,是Java社區著名的log4j的c++移植版,用於為C++程序提供日誌
功能,以便開發者對目標程序進行調試和審計。
有關log4cxx的更多信息可以從Apache Loggin Service的網站http://logging.apache.org獲得。當前的穩定版本為0.9.7,本文內
容及示例代碼都是基於此版本。此外,示例代碼的編譯環境為Windows環境中的Microsoft Visual C++ .Net 2003。
本文的示例代碼可以在此下載,其中也包含了預編譯好的log4cxx的庫文件。
2. 集成log4cxx到IDE
要使用log4cxx,首先需要將其集成到你的項目開發環境中。以下針對Windows環境中的Microsoft Visual C++ .Net 2003進行說明
,其他環境的配置信息請參考官方文檔。
要讓log4cxx為你工作,通常情況下需要如下幾個步驟:
l 獲取軟體包:得到log4xx的源代碼;
l 編譯:構建庫文件;
l 項目環境設置:加入log4cxx支持。
2.1 獲取軟體包
請從官方網站獲得合適的版本。也可以從下面這個鏈接中直接獲取(直接的鏈接地址可能不會永遠有效):
http://mirror.vmmatrix.net/apache/logging/log4cxx/log4cxx-0.9.7.tar.gz
下載完成後解壓縮到合適的目錄中,因為我們在下一步中需要使用軟體包,包括編譯和復制必要的文件。
2.2 編譯
原始發行包中不含編譯後的代碼,這個工作需要我們自己來做。打開你的IDE,並載入以下目錄中的工程:
l Msvc\static:該工程產生log4cxx的靜態鏈接庫(lib4cxx.lib和lib4cxxs.lib);
l Msvc\dll:該工程產生log4cxx的動態鏈接庫(lib4cxx.dll)。
通常情況下,工程都可以順利編譯通過。查看輸出目錄,把這些生成的庫文件找出來,以便在下一步驟中使用。
2.3 項目環境設置
請先在IDE中打開一個需要加入日誌功能的工程,或者出於實驗目的,新建一個工程,以便對其進行設置。
首先需要設置log4cxx的include文件。這些文件位於log4cxx軟體包的include\log4cxx目錄內。請查看你的VC++ IDE中「工具->選
項->項目->VC++目錄->包含文件」所列出的內容,以便確定你以何種方式加入這些include文件:
l 將include\log4cxx直接拷貝到已定義的包含文件目錄中。如果將log4cxx看作是一項系統服務的話,這樣做是胡合乎情理
的,因為你可以採用標准庫的方式使用它,例如:#include <log4cxx/logger.h>
l 增加一個包含路徑,以指向位於IDE外部的某一文件目錄。可以簡單的指向在2.1中解壓縮後形成的log4cxx軟體包目錄。
下一步需要對2.2節產生的log4cxx庫進行設置。這取決於你使用該庫的方式:靜態鏈接或者動態鏈接。
l 靜態鏈接情況下需要做如下工作:為預編譯器定義LOG4CXX_STATIC宏,設置位置為「項目->屬性->配置屬性->C/C++->預
處理器->預處理器定義」;為鏈接器指定依賴的庫lib4cxxs.lib和Ws2_32.lib,設置位置為「項目->屬性->配置屬性->鏈接器->輸
入->附加依賴項」。
l 動態鏈接情況下只需要為鏈接器指定依賴的庫lib4cxxs.lib即可,設置方式同上。

3. 示例代碼
本節展示了一個最簡單的log4cxx示例,以便你可以快速的了解它。
該示例在功能上創建了一個日誌服務,該日誌可通過配置文件進行必要控制,並可以同時向文件和控制台輸出信息。
在實現上,我們採用了一個簡單的控制台程序,並使用動態鏈接庫的方式使用log4cxx。
要實現這個目標,請按如下步驟進行:
1)創建一個名為logdemo的空白win32控制台工程,並按照2.3節所述內容對其進行設置。注意,這里我們使用動態連介面的方式。
2)在logdemo.cpp中加入實現日誌功能的代碼。完成後的代碼清單如下:
#include "stdafx.h"
#include <log4cxx/logger.h>
#include <log4cxx/propertyconfigurator.h>

using namespace log4cxx;

int _tmain(int argc, _TCHAR* argv[])
{
//載入log4cxx的配置文件,這里使用了屬性文件
PropertyConfigurator::configure("log4cxx.properties");

//獲得一個Logger,這里使用了RootLogger
LoggerPtr rootLogger = Logger::getRootLogger();

//發出INFO級別的輸出請求
LOG4CXX_INFO(rootLogger, _T("它的確工作了"));
//rootLogger->info(_T("它的確工作了")); //與上面那句話功能相當

return 0;
}

以Debug方式編譯工程,調試程序直到成功為止。
3)新建一個文本文件,命名為log4cxx.properties,並鍵入如下內容:
# 設置root logger為DEBUG級別,使用了ca和fa兩個Appender
log4j.rootLogger=DEBUG, ca, fa

4)復制log4cxx.dll到輸出目錄。在動態鏈接方式下,應用程序需要能夠找到這個庫文件。
5)運行生成的logdemo.exe文件,查看一下運行結果,看看我們工作有沒有取得成效。如果一切順利,無論是在控制台還是在輸出
文件中,都應該能看到類似下面那樣的輸出內容:
2006-06-02 16:09:50,609 [2528] INFO root - 它的確工作了

4. 體系結構
4.1 核心類
Log4cxx有三個關鍵組件,它們是loggers, appenders和layouts。
Logger是log4cxx的核心類,只要執行日誌操作;looger有層次結構,最頂層為RootLogger;logger是有級別的。每個logger可以附
加多個Appender。Appender代表了日誌輸出的目標,如輸出到文件、控制台等等。對於每一種appender,都可以通過layout進行格
式設置。
這三類組件用示意圖表示如下(不代表類關系):
(TODO:在此對三種組件分別進行說明)
4.2 配置類
此外在使用中還會用到的類有BasicConfigurator、PropertyConfigurator和DOMConfigurator等,用於對log4cxx進行配置。其中:
BasicConfigurator提供了一種簡單配置,包括使用ConsoleAppder作為root appender和PatternLayout作為預設布局。
PropertyConfigurator使用properties文件作為配置方式。
DOMConfigurator則使用properties文件作為配置方式。
(TODO:在此對配置內容進行說明)
5. 實踐指導
在項目中是否使用日誌,以及如何使用日誌,對開發者來說都是一個需要做出的技術選擇,這通常會牽扯到系統的性能,使用日誌
的目的等問題。我們使用日誌的方式,有些是這個行業積累了多年的經驗,有些則純粹關乎個人的喜好。
1)何時使用日誌
通常情況下,日誌的作用在於調試和審計,如果你的項目對此有特殊需求,即可考慮使用日誌。
對於調試,通常用於IDE調試器無法達到的地方。一些常見的場景包括:
分布式組件的調試。在伺服器端的組件,需要通過客戶端的調用來驗證其工作是否正確,此時利用日誌的輸出作為輔助工具對錯誤
進行診斷。
鏈接庫調試。在無法跟蹤進外部庫中的情況下,這種方法非常有效。
生產環境下的調試。生產環境通常是指產品在客戶處處於正式運行的狀態,在出現問題時,開發者常常不在現場,藉助日誌的輸出
進行錯誤判斷就是一個非常有效的手段。
對於審計應用,則需要視特定的情況而定,程序級的記錄能力,無疑可以作為業務級審計手段的有效補充。
無論是在哪種場景下,log4cxx都是可以勝任工作的,這取決於它的靈活的配置能力及多種類型的輸出方式。
2)性能問題
關閉日誌,通過配置文件設置日誌的關閉和打開
使用宏代替logger的輸出命令
選擇性輸出日誌。建立logger的層次結構,根據級別選擇性輸出
輸出目標。盡可能減少輸出目標
選擇合適的輸出格式。使用SimpleLayout將達到與std::cout相當的速度。
3)其它
使用類的全限定名對logger命名
6. 結論
Log4cxx具有的一些顯著特性使得C++者可以將其放入自己的工具箱中,這些特性包括靈活的配置能力,多種輸出手段,豐富的格式
控制,出色的性能。如果在你的開發中需要藉助於日誌進行調試和審計,你也許需要log4cxx。最後,重要的一點是,如你所見,
log4cxx的使用是如此的簡單。

⑺ NoClassDefFoundError: org/apache/log4j/Logger

1,導入了,但buildpath中並沒有加入到
2,包沖突了,在buildpath中有2個Log4j的包,導致編譯器不能確定用哪個包

閱讀全文

與liblogger編譯相關的資料

熱點內容
php鏈接正則表達式 瀏覽:964
安卓版蘋果手機怎麼轉手 瀏覽:101
安卓怎麼修改app的名字 瀏覽:135
域名伺服器可將域名地址 瀏覽:721
廣州伺服器機櫃怎麼賣 瀏覽:236
轉讓騰訊雲三年伺服器 瀏覽:252
網易雲音樂加密怎麼處理 瀏覽:387
編譯小視頻軟體 瀏覽:595
盒馬app買東西怎麼送 瀏覽:119
編譯原理國產 瀏覽:691
在線用pdf轉word 瀏覽:424
咪咕app怎麼發表文章 瀏覽:209
phpsftp上傳 瀏覽:936
php可以幹嘛 瀏覽:879
梁箍筋加密區需要滿綁扎嗎 瀏覽:330
程序員半個月工資多少 瀏覽:821
雲伺服器租賃還是私有 瀏覽:752
php七牛視頻上傳 瀏覽:14
php五星 瀏覽:311
使用api訪問外部文件夾 瀏覽:220