fifolog_create - Initialize storage for fifolog
fifolog_write - Write data to fifolog
fifolog_read - Seek and extract data from fifolog
A fifolog can be stored either directly on a disk partition or in a regular file.
The input data stream is encoded, compressed and marked up with timestamps before it is written to storage, such that it is possible to seek out a particular time interval in the stored data, without having to decompress the entire logfile.
Fifolog_create is used to initialize the first sector of a disk device or filesystem file to make it a fifolog and should be called only once.
Running fifolog_create on an existing fifolog will reset it so that fifolog_reader and fifolog_writer will not see the previous contents. (The previos contents is not physically erased, and with a bit of hand-work, all but the first record can be easily recovered).
If the file does not already exist fifolog_create will attempt to create and ftruncate(3) it to the specified size, defaulting to 86400 records of 512 bytes if the -r -l or -s arguments do not specify otherwise.
Fifolog_writer will read standard input and write it to the end of the fifolog according to the parameters given.
Writes happen whenever the output buffer is filled with compressed data or when either of two timers expire, forcing a partially filled buffer to be written.
The first and faster timer, -w write-rate forces available data to be written but does not flush and reset the compression dictionary. This timer is intended to minimize the amount of logdata lost in RAM in case of a crash and by default it fires 10 seconds after the previous write.
The second and slower timer, -s sync-rate forces a full flush and reset of the compression engine and causes the next record written to be a synchronization point with an uncompressed timestamp, making it possible to start reading the logfile from that record. By default this timer fires a minute after the previous sync.
The -z compression argument controls the zlib(3) compression level, legal values are zero to nine which is the default.
Fifolog_reader will retrieve records from the fifolog according to the specified parameters and write them either to stdout or the file specified with -o
It is possible to specify a start and end time to limit the amount of data fifolog_reader will report. The lower-case variants -b and -e take a time_t value, whereas the upper-case variants -B and -E take human redable specifications such as "1 hour ago".
The -t argument forces timestamps to be formatted as "YYYYMMDDhhmmss" instead of as time_t, and -T allows the specification of a strftime(3) formatting string.
Finally, records can be filtered such that only records matching the (REG_BASIC) regular expression specified with -R is output.
The exact encoding is described in the fifolog.h file.
Fifolog is particularly well suited for use on Flash based media, where it results in much lower write-wear, than a filesystem with regular logfiles rotated with newsyslog(8) etc.
fifolog_create -r 10m /tmp/fifolog
Write a single record to this file:
date | fifolog_writer /tmp/fifolog
Read it back with human readable timestamps:
fifolog_reader -t /tmp/fifolog
One particular useful use of fifolog_writer is with syslogd(8) using a line such as this in /etc/syslog.conf5:
*.* |fifolog_writer /var/log/syslog_fifolog
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |