需求:系統作分佈式,各個模塊的日誌寫文件,對於運維來講找起日誌來不方便,統一寫到mongodb中,error級別的日誌單獨存儲。php
個人環境是win7 64位系統html
第一步:java
下載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,在mongodb路徑下創建db文件夾用來存放數據web
啓動,進入cmd,輸入D:\mongodb\bin>mongod -dbpath=D:\mongodb\dbredis
第二步:mongodb
下載rockmongo,下載地址:http://rockmongo.com/downloads,下載後解壓到d盤根目錄下,路徑爲D:\rockmongo-on-windows,修改配置文件D:\rockmongo-on-windows\web\rockmongo\config.php:apache
$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管理界面windows
第三步:瀏覽器
創建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=INFO log4j.appender.MongoDBInfo=org.log4mongo.MongoDbAppender log4j.appender.MongoDBInfo.Threshold=INFO #log4j.appender.MongoDBWarn=org.log4mongo.MongoDbPatternLayoutAppender log4j.appender.MongoDBInfo.hostname=192.168.1.197 log4j.appender.MongoDBInfo.port=27017 log4j.appender.MongoDBInfo.databaseName=logdb log4j.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=ERROR log4j.appender.MongoDBError=org.log4mongo.MongoDbAppender log4j.appender.MongoDBError.Threshold=ERROR #log4j.appender.MongoDBError=org.log4mongo.MongoDbPatternLayoutAppender log4j.appender.MongoDBError.hostname=192.168.1.197 log4j.appender.MongoDBError.port=27017 log4j.appender.MongoDBError.databaseName=logdb log4j.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,collection infolog有三條記錄,包含info,warn,error的全部日誌,collection errorlog只有有一條error記錄
思考:當併發比較大時,mongodb支撐不了的時候,建議日誌先寫redis或者mq,再寫入mongodb
參照:http://www.educity.cn/wenda/365222.html