分布式数据库启动日志服务配置方法
来源:互联网 发布:淘宝公益宝贝有什么用 编辑:程序博客网 时间:2024/04/30 02:20
概述:基于Socket的远程log由server端和client端组成,server端需要启动一个JAVA类org.apache.log4j.net.SocketServer,client端使用SocketAppender。
Client端:
Client端其实就是写logger的应用,配置分为两部分,Appender和Logger,当然是写在log4j.xml里了。
Appender:
<
appender
name
=
"remoteFile"
class
=
"org.apache.log4j.net.SocketAppender"
>
<
param
name
=
"remoteHost"
value
=
"localhost"
/>
<!-- 这是远程log server -->
<
param
name
=
"port"
value
=
"4560"
/>
<!-- 这是远程log server port -->
<
param
name
=
"Threshold"
value
=
"INFO"
/>
<!-- log 级别 -->
<
param
name
=
"ReconnectionDelay"
value
=
"1000"
/>
<
param
name
=
"LocationInfo"
value
=
"true"
/>
</
appender
>
配置看名字也一目了然了。
Logger的配置与普通Logger没任何区别。例:
<
logger
name
=
"testRemote"
additivity
=
"false"
>
<
level
value
=
"INFO"
/>
<
appender-ref
ref
=
"remoteFile"
/>
</
logger
>
写了一段小代码测试Logger。
public
class
TestLog4j {
public
static
void
main(String[] args) {
DOMConfigurator.configure(TestLog4j.
class
.getResource(
"/log4j.xml"
));
Logger remoteLogger = LogManager.getLogger(
"testRemote"
);
remoteLogger.info(
"blabla"
);
}
}
Server端:
Server端使用SocketServer类。这个类提供了main函数,直接运行就可以了,不过需要注意参数的使用:
以下是一个运行的例子:
java -cp log4j-1.2.16.jar org.apache.log4j.net.SocketServer 4560 /data/log4j/log4jserver.properties /data/log4j/lcf/
4560是监听的端口,貌似SocketAppender默认也是这个端口。/data/log4j/log4jserver.properties是配置文件的地址,这个可以随便改。/data/log4j/lcf/依然是配置文件的地址,不过是以文件夹的形式。操蛋的是,这个文件夹下面随便写个配置文件它是不会读的!现在只知道generic.lcf会读,其它类似1.lcf之类的文件都会被跳过去。
下面介绍配置文件的写法。
配置文件依然分为Appender和Logger。其实配置方法跟client差不多,只是换成了非xml的写法罢了。
log4jserver.properties:
log4j.rootCategory=INFO, globalfile
//logger
log4j.logger.org.apache.log4j.net.SocketServer=DEBUG,serverFile
//logger
log4j.additivity.org.apache.log4j.net.SocketServer=
false
//logger
log4j.appender.serverFile=org.apache.log4j.DailyRollingFileAppender
//appender
log4j.appender.serverFile.DatePattern=
'.'
yyyy-MM-
dd
-HH
//appender
log4j.appender.serverFile.encoding=UTF-8
//appender
log4j.appender.serverFile.File=
/data/log4j/logs/log4jserver
.log
//appender
log4j.appender.serverFile.layout=org.apache.log4j.PatternLayout
//appender
log4j.appender.serverFile.layout.ConversionPattern=%d{yyyy-MM-
dd
HH:mm:ss},%m %n
//appender
log4j.appender.globalfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.globalfile.DatePattern=
'.'
yyyy-MM-
dd
-HH
log4j.appender.globalfile.encoding=UTF-8
log4j.appender.globalfile.File=
/data/log4j/logs/global
.log
log4j.appender.globalfile.layout=org.apache.log4j.PatternLayout
log4j.appender.globalfile.layout.ConversionPattern=%d{yyyy-MM-
dd
HH:mm:ss},%m %n
其中上面的logger和appender都标出来了。
最后要说明的是Server和Client的对应关系。Server端和Client端通过Logger来对应,与两边Appender取什么名字无关。Client端的Logger是什么名字,那么这个logger输出的log最终会被Server端相应的Logger输出。
generic.lcf:
log4j.logger.testRemote=INFO,localFile
log4j.additivity.testRemote=
false
log4j.appender.localFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.localFile.DatePattern=
'.'
yyyy-MM-
dd
log4j.appender.localFile.encoding=UTF-8
log4j.appender.localFile.File=
/data/log4j/logs/localFile
.log
log4j.appender.localFile.layout=org.apache.log4j.PatternLayout
log4j.appender.localFile.layout.ConversionPattern=%d{yyyy-MM-
dd
HH:mm:ss}, %p %m %n
如果没有配log4j.rootCategory,那么Server运行时会提示:
log4j:WARN No appenders could be found
for
logger (org.apache.log4j.net.SocketNode).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http:
//logging
.apache.org
/log4j/1
.2
/faq
.html
#noconfig for more info.
log4j:WARN No appenders could be found
for
logger (testRemote2).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http:
//logging
.apache.org
/log4j/1
.2
/faq
.html
#noconfig for more info.
其实它只写了个:
- 分布式数据库启动日志服务配置方法
- 分布式数据库启动日志服务配置方法
- 分布式服务管理框架-Zookeeper日志配置
- 分布式服务管理框架-Zookeeper日志配置
- 分布式服务框架 Zookeeper -- 日志配置
- Cassandra 分布式数据库 配置、启动与集群
- 配置Linux服务下mysql数据库服务开机自启动
- MySql5.5数据库日志配置方法
- Redis数据库配置,设置认证密码,启动服务
- 一种为使用Log4j的分布式应用提供云端日志服务的方法
- 阿里分布式数据库服务实践
- Tomcat服务启动限制日志过大的方法、使用管理员启动
- Oracle数据库用NetManager配置数据库服务方法
- sqlserver数据库服务启动
- Shell启动数据库服务
- elk日志分布式集中管理服务搭建
- elk日志分布式集中管理服务搭建
- VISTA配置SVN服务自动启动的方法
- 开启我的博客生涯
- 设置Eclipse、MyEclipse默认workspace路径
- Android 图片高斯模糊处理
- 使用DCMTK存储Dicom rt文件
- mfc判断目录是否存在创建多级目录
- 分布式数据库启动日志服务配置方法
- ubuntu linux下建立stm32开发环境: GCC安装以及工程Makefile建立
- Thrust 是一个开源的 C++ 库用于开发高性能并行应用程序
- QT 仓库管理系统 开放源码
- Hive中的ObjectInspector设计
- ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag
- 万能排序---冒泡法
- HIVE之Serde和Inspector介绍
- 发现一个很好的图片占位工具网。placehold.it