.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "DPKG::Log 3pm" .TH DPKG::Log 3pm "2011-02-26" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" DPKG::Log \- Parse the dpkg log .SH "VERSION" .IX Header "VERSION" version 1.20 .SH "SYNOPSIS" .IX Header "SYNOPSIS" use DPKG::Log; .PP my \f(CW$dpkg_log\fR = DPKG::Log\->new('filename' => 'dpkg.log', 'parse' => 1); .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module is used to parse a logfile and store each line as a DPKG::Log::Entry object. .SH "METHODS" .IX Header "METHODS" .ie n .IP "$dpkg_log = DPKG::Log\->\fInew()\fR" 4 .el .IP "\f(CW$dpkg_log\fR = DPKG::Log\->\fInew()\fR" 4 .IX Item "$dpkg_log = DPKG::Log->new()" .PD 0 .ie n .IP "$dpkg_log = DPKG::Log\->new('filename' => 'dpkg.log')" 4 .el .IP "\f(CW$dpkg_log\fR = DPKG::Log\->new('filename' => 'dpkg.log')" 4 .IX Item "$dpkg_log = DPKG::Log->new('filename' => 'dpkg.log')" .ie n .IP "$dpkg_log = DPKG::Log\->new('filename' => 'dpkg.log', 'parse' => 1 )" 4 .el .IP "\f(CW$dpkg_log\fR = DPKG::Log\->new('filename' => 'dpkg.log', 'parse' => 1 )" 4 .IX Item "$dpkg_log = DPKG::Log->new('filename' => 'dpkg.log', 'parse' => 1 )" .PD Returns a new DPKG::Log object. If parse is set to a true value the logfile specified by filename is parsed at the end of the object initialisation. Otherwise the parse routine has to be called. Filename parameter can be omitted, it defaults to /var/log/dpkg.log. .Sp Optionally its possible to specify \fBfrom\fR or \fBto\fR arguments as timestamps in the standard dpkg.log format or as DateTime objects. This will limit the entries which will be stored in the object to entries in the given timerange. Note that, if this is not what you want, you may ommit these attributes and can use \fB\f(BIfilter_by_time()\fB\fR instead. .Sp By default the module will assume that those timestamps are in the local timezone as determined by DateTime::TimeZone. This can be overridden by giving the argument \fBtime_zone\fR which takes a timezone string (e.g. 'Europe/Berlin') or a DateTime::TimeZone object. Additionally its possible to override the timestamp_pattern by specifying \&\fBtimestamp_format\fR. This has to be a valid pattern for DateTime::Format::Strptime. .ie n .IP "$dpkg_log\->filename" 4 .el .IP "\f(CW$dpkg_log\fR\->filename" 4 .IX Item "$dpkg_log->filename" .PD 0 .ie n .IP "$dpkg_log\->filename('newfilename.log')" 4 .el .IP "\f(CW$dpkg_log\fR\->filename('newfilename.log')" 4 .IX Item "$dpkg_log->filename('newfilename.log')" .PD Get or set the filename of the dpkg logfile. .ie n .IP "$dpkg_log\->parse" 4 .el .IP "\f(CW$dpkg_log\fR\->parse" 4 .IX Item "$dpkg_log->parse" .PD 0 .ie n .IP "$dpkg_log\->parse('time_zone' => 'Europe/Berlin')" 4 .el .IP "\f(CW$dpkg_log\fR\->parse('time_zone' => 'Europe/Berlin')" 4 .IX Item "$dpkg_log->parse('time_zone' => 'Europe/Berlin')" .ie n .IP "$dpkg_log\->parse('time_zone' => $dt_tz )" 4 .el .IP "\f(CW$dpkg_log\fR\->parse('time_zone' => \f(CW$dt_tz\fR )" 4 .IX Item "$dpkg_log->parse('time_zone' => $dt_tz )" .PD Call the parser. .Sp The \fBtime_zone\fR parameter is optional and specifies in which time zone the dpkg log timestamps are. If its omitted it will use the default local time zone. Its possible to specify either a DateTime::TimeZone object or a string. .ie n .IP "@entries = $dpkg_log\->entries;" 4 .el .IP "\f(CW@entries\fR = \f(CW$dpkg_log\fR\->entries;" 4 .IX Item "@entries = $dpkg_log->entries;" .PD 0 .ie n .IP "@entries = $dpkg_log\->entries('from' => '2010\-01\-01.10:00:00', to => '2010\-01\-02 24:00:00')" 4 .el .IP "\f(CW@entries\fR = \f(CW$dpkg_log\fR\->entries('from' => '2010\-01\-01.10:00:00', to => '2010\-01\-02 24:00:00')" 4 .IX Item "@entries = $dpkg_log->entries('from' => '2010-01-01.10:00:00', to => '2010-01-02 24:00:00')" .PD Return all entries or all entries in a given timerange. .Sp \&\fBfrom\fR and \fBto\fR are optional arguments, specifying a date before (from) and after (to) which entries aren't returned. If only \fBto\fR is specified all entries from the beginning of the log are read. If only \fBfrom\fR is specified all entries till the end of the log are read. .ie n .IP "$entry = $dpkg_log\->next_entry;" 4 .el .IP "\f(CW$entry\fR = \f(CW$dpkg_log\fR\->next_entry;" 4 .IX Item "$entry = $dpkg_log->next_entry;" Return the next entry. .ie n .IP "@entries = $dpkg_log\->filter_by_time(from => ts, to => ts)" 4 .el .IP "\f(CW@entries\fR = \f(CW$dpkg_log\fR\->filter_by_time(from => ts, to => ts)" 4 .IX Item "@entries = $dpkg_log->filter_by_time(from => ts, to => ts)" .PD 0 .ie n .IP "@entries = $dpkg_log\->filter_by_time(from => ts)" 4 .el .IP "\f(CW@entries\fR = \f(CW$dpkg_log\fR\->filter_by_time(from => ts)" 4 .IX Item "@entries = $dpkg_log->filter_by_time(from => ts)" .ie n .IP "@entries = $dpkg_log\->filter_by_time(to => ts)" 4 .el .IP "\f(CW@entries\fR = \f(CW$dpkg_log\fR\->filter_by_time(to => ts)" 4 .IX Item "@entries = $dpkg_log->filter_by_time(to => ts)" .ie n .IP "@entries = $dpkg_log\->filter_by_time(from => ts, to => ts, entry_ref => $entry_ref)" 4 .el .IP "\f(CW@entries\fR = \f(CW$dpkg_log\fR\->filter_by_time(from => ts, to => ts, entry_ref => \f(CW$entry_ref\fR)" 4 .IX Item "@entries = $dpkg_log->filter_by_time(from => ts, to => ts, entry_ref => $entry_ref)" .PD Filter entries by given \fBfrom\fR \- \fBto\fR range. See the explanations for the new sub for the arguments. .Sp If entry_ref is given and an array reference its used instead of \f(CW$self\fR\->{entries} as input source for the entries which are to be filtered. .ie n .IP "($from, $to) = $dpkg_log\->\fIget_datetime_info()\fR" 4 .el .IP "($from, \f(CW$to\fR) = \f(CW$dpkg_log\fR\->\fIget_datetime_info()\fR" 4 .IX Item "($from, $to) = $dpkg_log->get_datetime_info()" Returns the from and to timestamps of the logfile or (if from/to values are set) the values set during object initialisation. .SH "SEE ALSO" .IX Header "SEE ALSO" DPKG::Log::Entry, DateTime, DateTime::TimeZone .SH "AUTHOR" .IX Header "AUTHOR" Patrick Schoenfeld . .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright (C) 2011 Patrick Schoenfeld .PP This library is free software. You can redistribute it and/or modify it under the same terms as perl itself.