揮発性のメモ2

最近知った知識を さも昔から知ってた風にメモ書きしていく

VirtualBoxのログの日付を見やすくする

VirtualBoxのログは 起動してからの時分秒で書かれているので、結局いつのことかわからない

$ cat VBox.log
00:00:00.401953 VirtualBox VM 7.1.14 r170994 linux.amd64 (Oct 16 2025 16:11:04) release log
00:00:00.401955 Log opened 2026-01-29T07:33:03.614781000Z
00:00:00.401956 Build Type: release
00:00:00.401957 OS Product: Linux
00:00:00.401958 OS Release: 6.1.0-28-amd64


見やすくするperlプログラム

#!/usr/bin/perl
use strict;
use warnings;
use DateTime;
use HTTP::Date;

if(@ARGV>0 && $ARGV[0] eq "-h"){
    print("VBox.log の日付を見やすくする\n");
    exit;
}


my $base_dt = DateTime->from_epoch(0);

while(my $line = <STDIN>){
    if($line =~ /Log opened (\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d\.\d*Z)/){
        my $epoch = str2time($1);
        $base_dt = DateTime->from_epoch(epoch=>$epoch, time_zone=>'local');
    }

    if($line =~ /^(\d+):(\d\d):(\d\d).\d* (.*)$/){
        my $dt = $base_dt->clone;
        $dt->add(
            hours   => $1,
            minutes => $2,
            seconds => $3,
        );
        $line = $dt->datetime(' '). " $4\n";
    }

    print $line;
}


使い方

$ ./hiduke.pl < VBox.log
1970-01-01 00:00:00 VirtualBox VM 7.1.14 r170994 linux.amd64 (Oct 16 2025 16:11:04) release log
2026-01-29 16:33:03 Log opened 2026-01-29T07:33:03.614781000Z
2026-01-29 16:33:03 Build Type: release
2026-01-29 16:33:03 OS Product: Linux
2026-01-29 16:33:03 OS Release: 6.1.0-28-amd64

やったぜ