Fedora 23を使っていますが、yumからDNFに乗り換えたところlogwatchでログが出力されません。なんとかならないかとググってみましたが、まだ対応していないようです。
ということで手動で追加してみました。
出力ログを追加するには、通常3つのファイルを作成しますが、今回は4つのファイルを作ります。ほとんどyum用のファイルを流用してるんですけどね!
サービス名を指定
/usr/share/logwatch/default.conf/services/dnf.conf
LogFile = dnf
対象ログを指定
/usr/share/logwatch/default.conf/logfiles/dnf.conf
出力スクリプトを作成
/usr/share/logwatch/scripts/services/dnf
if ( $Debug >= 5 ) {
print STDERR "\n\nDEBUG: Inside DNF Filter \n\n";
$DebugCounter = 1;
}
while (defined($ThisLine = <STDIN>)) {
if ( $Debug >= 5 ) {
print STDERR "DEBUG($DebugCounter): $ThisLine";
$DebugCounter++;
}
if ( $ThisLine =~ s/INFO Upgraded: ([^ ]+)/$1/ ) {
$PackageUpgraded{$ThisLine}++;
} elsif ( $ThisLine =~ s/INFO Installed: ([^ ]+)/$1/ ) {
$PackageInstalled{$ThisLine}++;
} elsif ( $ThisLine =~ s/INFO Cleanup: ([^ ]+)/$1/ ) {
$PackageCleanup{$ThisLine}++;
} elsif ( $ThisLine =~ s/INFO Erased: ([^ ]+)/$1/ ) {
$PackageErased{$ThisLine}++;
} elsif ( $ThisLine =~ /logging initialized.*/o ) {
#
} else {
push @OtherList,$ThisLine;
}
}
if (keys %PackageInstalled) {
print "\nPackages Installed:\n";
foreach $ThisOne (keys %PackageInstalled) {
print " " . $ThisOne;
}
}
if (keys %PackageCleanup) {
print "\nPackages Cleanup:\n";
foreach $ThisOne (keys %PackageCleanup) {
print " " . $ThisOne;
}
}
if (keys %PackageUpgraded) {
print "\nPackages Upgraded:\n";
foreach $ThisOne (keys %PackageUpgraded) {
print " ". $ThisOne;
}
}
if (keys %PackageErased) {
print "\nPackages Erased:\n";
foreach $ThisOne (keys %PackageErased) {
print " ". $ThisOne;
}
}
if ($#OtherList >= 0) {
print "\n**Unmatched Entries**\n";
print @OtherList;
}
exit(0);
前日のログのみ検出?
/usr/share/logwatch/scripts/logfiles/dnf/applydate
use Logwatch ':dates';
my $Debug = $ENV{'LOGWATCH_DEBUG'} || 0;
my $time = time;
$SearchDate = TimeFilter('%m/%d/%y %H:%M:%S');
$SearchNewDate = TimeFilter('%b %d %H:%M:%S');
if ( $Debug > 5 ) {
print STDERR "DEBUG: Inside ApplyDate (yum)…\n";
print STDERR "DEBUG: Looking For: " . $SearchDate . " or " . $SearchNewDate . "\n";
}
while (defined($ThisLine = <STDIN>)) {
# Here we actually remove the dates, as well
if ($ThisLine =~ s/^$SearchNewDate //o ||
$ThisLine =~ s/$SearchDate //o) {
print $ThisLine;
}
}
4つめのapplydateの存在に気付かなくて、前日のみ出力ってどうやるんだろうと悩みました。
動作確認で出力してみます。
# logwatch –service dnf
正常に出力されていればOKです。
コメント