一、前提条件 系统必须是使用LOG4J进行
日志管理,否则方法无效。 系统必须包含中国mons-logging-xxx.jar,log4j-xxx.jar这两个JAR包,XXX为版本号。 二、 *** 作步骤 1、创建日志表要把日志持久化,必须在
数据库中创建一张用来存储日志信息的表,表内字段为日志 的一个主要属性包括: *** 作类,执行方法,打印时间,日志级别,日志内容。CREATE TABLE RESLOG (LOGID VARCHAR2(20) NOT NULL, CLASS VARCHAR2(200), METHOD VARCHAR2(100), CREATETIME DATE, LOGLEVEL VARCHAR2(50), MSG VARCHAR2(4000))因为存储的类为类的全部路径,所以CLASS字段长度需要比较大。2、日志管理配置 LOG4J主要有两种配置
文件.properties和.xml,这里以properties文件为基础来讲 述,关于XML文件的配置,相信大家看完下面的介绍也一样能轻松完成。 通常在LOG4J.PROPERTIES文件的第一行是: log4j.rootLogger= XXX,这句是控制日志的输出,如果想吧日志输出到数据库, 则需要在XXX中添加“DB”,如log4j.rootLogger=INFO,stdout,Platform,db。上面 这句就是把日志中级别为INFO的信息输出到STDOUT,PLATFORM和DB (DATABASE)中。 配置好如上的信息,LOG4J就知道用户是想把信息存入数据库,接下来我们就要来 配置数据库的相关信息(包括缓存,数据库连接信息,和执行SQL),配置信息如下: ###JDBCAppender log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender //这个配置是选择使用JDBCAppender方法,将日志信息存储到数据库。当然,如果你还要做其他 *** 作,可以自己写个类,继承JDBCAppender就OK了。 log4j.appender.db.BufferSize=1 //这个配置是告诉LOG4J,有中国条日志信息后才存入数据库,我这里是1,就是说有一条就查一条,显然这样在生产环境下是很影响系统性能的。 log4j.appender.db.driver=oracle.jdbc.driver.OracleDriver //这个配置是告诉LOG4J,做数据库存储所用的驱动。 log4j.appender.db.URL=jdbc:oracle:thin:@:: //这个配置数据库连接的URL,不用说也都知道。 log4j.appender.db.user=XXX log4j.appender.db.password=XXX //上面两个是数据库连接时的用户名和密码 log4j.appender.db.sql=insert into RESLOG (LogId,Class,Method,createTime,LogLevel,MSG)values (SQ_RESLOG_LOGID.Nextval,'%C','%M', to_date('%d{yyyy-MM-dd HH:mm:ss}','yyyy-MM-ddHH24:mi:ss'),'%p','%m') //这个配置是告诉当LOG4J吧日志存储数据库时用的SQL语句。SQ_RESLOG_LOGID.Nextval是我建的一个SEQUENCE;‘%C’是日志中的CLASS;‘%M’是打印日志是执行到类里的方法;‘%d’是打印的时间,它支持格式化;‘%P’是日志级别,包括INFO、DEBUG、ERROR等;‘%m’是MSG,日志内容。注意这里的参数区分大小写。 log4j.appender.db.layout=org.apache.log4j.PatternLayout 通过上面的配置,现在再启动服务,LOG4J就会自动把原来存储在.LOG文件中的信息,同时存储到数据库了这几天写论文做实验,Web日志挖掘部分第一步就是对Web日志进行预处理。所谓预处理就是将Web日志中没有用的记录和字段去掉。根据我的实验需要需要保留的是有效用户对于有效页面的访问时间,就这三个字段就可以。做数据预处理的第一步是将以文本形式保存的Web日志导入数据库,然后利用SQL语句对其所导入的数据库表进行 *** 作就可以完成数据与处理。
Web日志的形式如下图所示:
这个部分之前一直不是很明白,询问去年做过这个工作的两个哥们,其中一个说用C++中STL部分可以实现,另一个说是将日志按行读取,分割内容存入数据库,然后读取下一行,却没有做具体工作。总之这两个人所说的都是利用编码来实现文本的读取和内容的分割最后再导入数据库。这样在理论上是可行的,但是实际 *** 作起来还是有很大的麻烦的,以现在的时间来看是来不及的。
还好在相关文献上看到有人提到用SQL
Server2000种的DTS工具可以实现这个导入功能。在网上进行搜索居然没有任何有用的类似于教程的文章,手头还没有SQL
Server的书籍,只能自己研究了,经过了一个小时的研究终于将这个问题解决。
Web日志文件虽然是文本文件,但是它的后缀是.log,如果想将其导入数据库必须首先将其后缀改称.txt。然后打运行SQL
Server2000的服务管理器,打开企业管理器。建立新的数据库Weblog,然后利用工具DTS进行 *** 作,DTS即数据转换服务。 *** 作为“工具—〉数据转换服务—〉导入数据”,出现如下对话框如图2所示。
在图3对话框中的数据源选择文本文件,对话框变成图4所示界面。点击文件名处右边的浏览按钮可以选择所要读取的文本文件形式的日志。这里只能读取.txt文件,所以前面一定要将Web日志的后缀.log改成后缀.txt。
根据图1我们看到Web日志头四行都是日志的信息,比如时间和文件格式,所以在跳过行里面要写跳过4行。下一步进入图6所示界面。
在图6种需要选择如何对文本文件中每一行的各个字段进行区分。选择方式如图中所示。由于Web日志每行为一个记录,每条记录中每一个字段中间都是用空格来进行分隔,所以选择“其它”然后在其对话框中填入一个空格键“
”,系统就将对数据进行处理进行划分,得到分割好的记录。当然相应字段的名称是错误的,这个可以在以后生成数据库表文件后对表进行设计修改。点击下一步进入图7所示界面。
单击下一步之后就可以完成数据导入。
然后刷新数据库Weblog,就可以看到与Web日志同名的新的数据库表文件。修改相应字段的名称,就可以完成数据的导入和数据库表的建立。
接下来可以利用查询分析器对Web日志的数据库表进行 *** 作,完成数据预处理,进而进行日志挖掘或者流量分析。
开始之前
限制和局限
当 BACKUP 语句正在运行时,不能添加或删除文件。
可以为每个数据库指定最多 32,767 个文件和 32,767 个文件组。
安全性
权限
需要对数据库拥有 ALTER 权限。
使用 SQL Server Management Studio
向数据库添加数据文件或日志文件
在 “对象资源管理器”中,连接到 SQL Server 数据库引擎 的实例,然后展开该实例。
展开“数据库”,右键单击要从中添加文件的数据库,然后单击“属性”。
在 “数据库属性” 对话框中,选择 “文件” 页。
若要添加数据或事务日志文件,请单击 “添加”。
在 “数据库文件” 网格中,输入文件的逻辑名称。 该文件名在数据库中必须唯一。
选择文件类型:数据或日志。
对于数据文件,从列表中选择应包含该文件的文件组,或选择“<新建文件组>”来创建新的文件组。 事务日志不能放在文件组中。
指定文件的初始大小。 根据数据库中您希望的最大数据量,使数据文件尽可能大。
若要指定文件的增长方式,请在“自动增长”列中单击 (…)。 从下列选项中进行选择:
若要允许当前选中的文件根据数据空间量的需求增加而增长,请选中 “启用自动增长” 复选框,然后从下列选项中进行选择:
若要指定文件按固定增量增长,请选择 “按 MB” 并指定一个值。
若要指定文件按当前文件大小的百分比增长,请选择 “按百分比” 并指定一个值。
若要指定最大文件大小限制,请从下列选项中进行选择:
若要指定文件能够增长到的最大大小,请选择“限制文件增长(MB)”并指定一个值。
若要允许文件根据需要增长,请选择 “不限制文件增长”。
若要防止文件增长,请清除 “启用自动增长” 复选框。 文件大小不会增长到超过“初始大小(MB)”列中指定的值。
评论列表(0条)