Plog 是 "Parse Log" 的缩写,是一套处理日志流的框架,日志流格式可以是Apache,nginx等常规意义的日志格式,也可以是自定义格式
受FlumeNG的启发,我把整个工程分成了三个部分:source,channel ,sink,已经完成了主体的共有的可以抽象出来的功能,比如线程的同步互斥,消息的生产消费,处理时间间隔的控制,还有一些简单的source,channel and sink函数
下面是一个简单的配置文件:
[source] #定义读取数据的模块名 source_module=file_source #定义源文件 source_file=./test/plog_demo.log #定义读取文件的时间间隔,单位s source_interval=5 [channel] #定义解析数据的模块名 channel_module=regrex_channel #如是正则,定义正则规则 channel_filter_regex=([\w\d.\s,]{0,})\s([0-9.]+)\s(?P\d+|-)\s(\w+)\s\[([^\[\]]+)\s\+\d+\]\s"((?:[^"]|\")+)"\s(?P\d{3})\s(\d+|-)\s"((?:[^"]|\")+|-)"\s"(.+|-)"\s"((?:[^"]|\")+)"\s"(.+|-)"$ [sink] #定义发送数据的时间间隔 interval=60 #定义计算与发送的模块名 sink_module=zabbix_sink sink_service=cacheL2 #定义需要的key sink_zabbix_monitor_keys=200,300,400,500 #定义发送给zabbix写数据的文件 sink_zabbix_send_file=/tmp/zabbix_send_info #定义发送zabbix sender路径 sink_zabbix_sender=/usr/bin/zabbix_sender #定义zabbix的配置文件 sink_zabbix_conf=/etc/zabbix/zabbix_agentd.conf [log_config] #定义输出log的格式,级别,路径等,方便调试程序。 logging_format=%(asctime)s %(filename)s [funcname:%(funcName)s] [line:%(lineno)d] %(levelname)s %(message)s logging_level=20 logging_filename=/tmp/plog.log
使用了ConfigParse来解析配置文件
在这一部分,我们需要处理的是数据流的来源,他可能是file,可能是socket,可能是管道,但是我不关注你的数据来源格式是什么样的,因为我无法满足这些需要各式各样的数据来源需求,而你的需要是什么样的,你最清楚,那么你只要写一个source的插件就可以了,名字随意你定,你需要的是把你写的那个插件的名字,写到plog.conf里面,默认有读取文件的file_source模块,读取管道的read_from_pipeline模块,可以直接使用。
具体实例如下:
source_module=self-define-script-name
自定义source的具体实现,参看source module下的plog/source/youself_define_source.py
在这个部分,主要是对数据流的处理,你同样需要写一个 Python的脚本,名字随意你定,但是你需要写到 plog.conf 中,默认有解析python正则的模块可以直接使用,类似下方:
channel_module=filter_log
同样的你需要实现的channel可以参见 plog/channel/youself_define_channel.py
在这个部分,你同样需要写一个Python脚本,他的名字同样取决于你的个人喜好,你需要的是把你写的那个插件的名字写到plog.conf,例如下方:
sink_module=cacheL2get_monitor
同样的你需要完成的脚本可以参见plog/sink/youself_define_sink.py
下面的测试是读取一个本地本件,解析,计算自己要想的结果发送到zabbix监控系统。
1.git clone https://github.com/SinaMSRE/Plog.git 2.cd ./Plog/test 3.sh gen_log.sh & 4.cd .. && python plog.py -c conf/plog.conf 5.you will see a file**/tmp/zabbix_send_info_test123**,its contents like followings: [xxxx@test Plog]$ cat /tmp/zabbix_send_info_test123 xxxx test123_300 0.000000 xxxx test123_200 59.000000 xxxx test123_500 0.000000 xxxx test123_400 0.000000
g_pLog = new CLog("log"); g_pLog->Enable(); g_pScrLog = new CLog("data"); g_pScrLog->Enable(); CString srelog= _T("log..."); g_pLog->WriteLogFile(srelog); #include <sys/stat.h> #include <f
p(date). 2010-12-06 日志是一个应用程序的重要组成部分,今天在看pylons对日志的处理时,受到启发,于是plog就诞生了。 很多php框架都忽略了日志的重要性(如kohana),往往只是能用,自定义和可扩展性不够,等到程序出了问题,再想找原因时就比较麻烦了。 plog简介 plog是一款轻量级,易定制,易使用,易扩展的php日志系统。可以很方便地添加日志处理工具、自定义输出格式
plog下载地址https://github.com/SergiusTheBest/plog 假设有下面三个模块,欲使他们3个日志都写到同一个log.txt文件。A依赖B、C 模块 ModleA.exe ModleB.dll ModleC.dll 在ModleA中 #include “MoudlB.h” #include “MoudlC.h” #include "Log.h" string log
刚开始搭建pLog平台的时候,使用的是PHP4,后来转移到正式服务器上之后,发现后台管理页面登录之后,凡是带有admin.php?op= xxx的页面全部无法进入,提示“Access is forbidden. You must authenticate first here.”,刚开始以为是在数据库从测试服务器导出、又导入到正式服务器中出了问题(因为还存在一个MYSQL 4.0 -> 4.1的升
作者:hellwolf( hellwolf at seu.edu.cn) 来自:LinuxSir.org 提要: 在FC4中安装plog程序,plog是一个强大的基于PHP的blog系统; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 正文 +++++++++++++++++++++++++++++++++++++++
pLog is a popular form of bloggin software. Currently there are estimated about 1450 sites running it. The installation documents clearly warn about removing files after installation for security purp
序 用plog时,想记录一些配置信息,加了一个新的LOG类型plog::config, 在日志中就可以搜索”CONFIG”来找配置信息的日志了. 顺便整理了一个使用plog的demo. 工程下载点 src_test_plog.zip 编译环境 : debian7.5.0 x64 实验 #include <string> #include <string.h> #include <iostream>
Plog 是 "Parse Log" 的缩写,是一套处理日志流的框架,日志流格式可以是Apache,nginx等常规意义的日志格式,也可以是自定义格式 受FlumeNG的启发,我把整个工程分成了三个部分:source,channel ,sink,已经完成了主体的共有的可以抽象出来的功能,比如线程的同步互斥,消息的生产消费,处理时间间隔的控制,还有一些简单的source,channel and si
#安装说明 https://projects.pekdon.net/projects/plog/wikis/Install env PHEW_CONFIG=/etc/plog.cfg phew httpd plog.frontend phew模块网址 https://www.pekwm.org/projects/phew/ nginx 日志配置 access_log syslog:use
日志记录和写入由\think\Log类完成,通常我们使用think\facade\Log类进行静态调用。 由于日志记录了所有的运行错误,因此养成经常查看日志文件的习惯,可以避免和及早发现很多的错误隐患。 5.1的日志遵循PSR-3规范 [TOC=2,3] 日志配置 日志的配置文件是配置文件目录下的log.php文件,如果需要针对不同的模块设置不同的日志类型,则需要在模块配置目录下的log.php中
日志位置在/redis/log下,redis.log为redis主日志,sentinel.log为sentinel监控日志。
beego 之前介绍的时候说过是基于几个模块搭建的,beego 的日志处理是基于 logs 模块搭建的,内置了一个变量 BeeLogger,默认已经是 logs.BeeLogger 类型,初始化了 console,也就是默认输出到 console。 使用入门 一般在程序中我们使用如下的方式进行输出: beego.Emergency("this is emergency") beego.Alert(
这是一个用来处理日志的库,它的设计思路来自于 database/sql,目前支持的引擎有 file、console、net、smtp,可以通过如下方式进行安装: go get github.com/astaxie/beego/logs 如何使用 通用方式 首先引入包: import ( "github.com/astaxie/beego/logs" ) 然后添加输出引擎(log 支持同
1.【强制】应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。 import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static final Logger logger = LoggerFactory
为了打印日志,可使用Objective-C编程语言中的方法,首先在示例中使用了这个方法。 下面来看一下打印“Hello World”字样的简单代码 - 现在,当编译并运行程序时,将得到以下结果 - 在实时应用程序中禁用日志 由于在应用程序中经常使用,它将日志信息打印在设备的日志中,并且在实时构建中打印日志是不好的。 因此,使用类型定义来打印日志,如下所示。 执行上面示例代码,得到以下结果: 现在,
日志 Cabin默认使用内置的 log 来将日志输出到控制台,如: 2017/07/15 19:43:56 [Request: alice, data1, read ---> true] 日志记录不是默认启用的,您可以通过调用 Enforcer.EnableLog() 或 NewEnforcer()函数中的最后一个参数来切换它。 note 我们已经支持日志模型、强制请求、角色、Golang策略。
NSLog方法 为了打印日志,我们使用Objective-C编程语言中的NSLog方法,我们在Hello World示例中使用了该方法。 让我们看一下打印“Hello World”字样的简单代码 - #import <Foundation/Foundation.h> int main() { NSLog(@"Hello, World! \n"); return 0; } 现在,当我们