標籤:
需求:系統做分布式,各個模組的日誌寫檔案,對於營運來說找起日誌來不方便,統一寫到mongodb中,error層級的日誌單獨儲存。
我的環境是win7 64位系統
第一步:
下載mongdb,: https://www.mongodb.org/dl/win32/x86_64-2008plus-ssl ,我下載的是:win32/mongodb-win32-x86_64-2008plus-ssl-v3.0-latest.zip,下載後解壓到d盤根目錄下,路徑為:D:\mongodb
啟動,進入cmd,輸入D:\mongodb\bin>mongod -dbpath=D:\mongodb\db
第二步:
下載rockmongo,:http://rockmongo.com/downloads,下載後解壓到d盤根目錄下,路徑為D:\rockmongo-on-windows,修改設定檔D:\rockmongo-on-windows\web\rockmongo\config.php:
$MONGO["servers"][$i]["mongo_db"] = "logdb";//default mongo db to connect, works only if mongo_auth=false$MONGO["servers"][$i]["mongo_user"] = "admin";//mongo authentication user name, works only if mongo_auth=false$MONGO["servers"][$i]["mongo_pass"] = "admin";//mongo authentication password, works only if mongo_auth=false
mongo_db,填寫你的db名mongo_user,定義的帳號mongo_pass,定義的密碼
啟動,雙擊D:\rockmongo-on-windows\rockstart.bat,會在瀏覽器中彈出登入框,輸入帳號和密碼即可,可以不用選擇db名稱,進入mongodb管理介面
第三步:
建立maven工程,添加依賴:
<!-- log4j mongo --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency><dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>2.7.2</version></dependency><dependency><groupId>org.log4mongo</groupId><artifactId>log4mongo-java</artifactId><version>0.7.4</version></dependency><!-- log4j mongo -->
在resources下建立log4j.properties:
log4j.rootCategory=INFO,MongoDBError,MongoDBInfo#---------------------------------------# log4Mongo info#---------------------------------------log4j.logger.MongoDBInfo=INFOlog4j.appender.MongoDBInfo=org.log4mongo.MongoDbAppenderlog4j.appender.MongoDBInfo.Threshold=INFO#log4j.appender.MongoDBWarn=org.log4mongo.MongoDbPatternLayoutAppenderlog4j.appender.MongoDBInfo.hostname=192.168.1.197log4j.appender.MongoDBInfo.port=27017log4j.appender.MongoDBInfo.databaseName=logdblog4j.appender.MongoDBInfo.collectionName=infolog# The layout property is required only if the MongoDbPatternLayoutAppender appender is used.# If a custom PatternParser and custom PatternConverters are required to log additional data,# the specified layout class must extend MongoDbPatternLayout. A ConversionPattern property# should also be specified.log4j.appender.MongoDBInfo.layout=org.log4mongo.MongoDbPatternLayout#---------------------------------------# log4Mongo error#---------------------------------------log4j.logger.MongoDBError=ERRORlog4j.appender.MongoDBError=org.log4mongo.MongoDbAppenderlog4j.appender.MongoDBError.Threshold=ERROR#log4j.appender.MongoDBError=org.log4mongo.MongoDbPatternLayoutAppenderlog4j.appender.MongoDBError.hostname=192.168.1.197log4j.appender.MongoDBError.port=27017log4j.appender.MongoDBError.databaseName=logdblog4j.appender.MongoDBError.collectionName=errorlog# The layout property is required only if the MongoDbPatternLayoutAppender appender is used.# If a custom PatternParser and custom PatternConverters are required to log additional data,# the specified layout class must extend MongoDbPatternLayout. A ConversionPattern property# should also be specified.log4j.appender.MongoDBError.layout=org.log4mongo.MongoDbPatternLayout
建立測試類別:
import org.apache.log4j.Logger;public class Log4j4Mongo {public static void main(String[] args) {Logger logger = Logger.getLogger(Log4j4Mongo.class);logger.info("郭德綱說相聲呢....");logger.warn("郭德綱跟春晚領導有些矛盾....");logger.error("郭德綱泡了于謙的媳婦....");}}
執行測試類別後,會在rockmongo上看到有logdb庫中有infolog和errorlog兩個collection,infolog有三條記錄,errorlog有一條記錄
參照:http://www.educity.cn/wenda/365222.html
windows下日誌儲存到mongodb下