LXC/Logrotate: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
 
(32 intermediate revisions by the same user not shown)
Line 2: Line 2:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
lxc image ls images:alpine/3.21
lxc image ls images:alpine/3.21
lxc rm -f    logrotate 2>/dev/null
lxc launch  images:alpine/3.21 logrotate
lxc launch  images:alpine/3.21 logrotate
lxc export  logrotate logrotate_alpine-20250523.tar.gz --optimized-storage


lxc delete  logrotate/alpine:3.21 2>/dev/null
lxc delete  logrotate/alpine:3.21 2>/dev/null
lxc snapshot logrotate alpine:3.21
lxc snapshot logrotate alpine:3.21
lxc export  logrotate logrotate_alpine-20250523.tar.gz --optimized-storage
lxc rm -f    logrotate 2>/dev/null
lxc import  logrotate logrotate_alpine-20250523.tar.gz logrotate
lxc start    logrotate
lxc restore  logrotate alpine:3.21
lxc restore  logrotate alpine:3.21
lxc info    logrotate
lxc info    logrotate
Line 14: Line 20:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
lxc image ls ubuntu:24.04
lxc image ls ubuntu:24.04
lxc rm -f    logrotate 2>/dev/null
lxc launch  ubuntu:24.04 logrotate
lxc launch  ubuntu:24.04 logrotate
lxc export  logrotate logrotate_ubuntu-20250523.tar.gz --optimized-storage
 
lxc delete  logrotate/ubuntu:24.04 2>/dev/null
lxc snapshot logrotate ubuntu:24.04
lxc export  logrotate logrotate_ubuntu-20250604.tar.gz --optimized-storage


lxc rm -f    logrotate 2>/dev/null
lxc rm -f    logrotate 2>/dev/null
lxc import  logrotate_ubuntu-20250523.tar.gz logrotate
lxc import  logrotate_ubuntu-20250604.tar.gz logrotate
lxc start    logrotate
lxc start    logrotate


lxc delete  logrotate/ubuntu:24.04 2>/dev/null
lxc snapshot logrotate ubuntu:24.04
lxc restore  logrotate ubuntu:24.04
lxc restore  logrotate ubuntu:24.04
lxc info    logrotate
</syntaxhighlight>
----
<syntaxhighlight lang="bash">
cat <<'EXE'| lxc exec logrotate -- bash
echo;apt-get update;echo
apt-get install -y logrotate faketime;echo;apt-get clean
EXE
lxc delete  logrotate/faketime:0.9.10 2>/dev/null
lxc snapshot logrotate faketime:0.9.10
lxc export  logrotate logrotate_faketime-20250604.tar.gz --optimized-storage
lxc rm -f    logrotate 2>/dev/null
lxc import  logrotate_faketime-20250604.tar.gz logrotate
lxc start    logrotate
lxc restore  logrotate faketime:0.9.10
lxc info    logrotate
lxc info    logrotate
</syntaxhighlight>
==LXC » Logrotate » Ubuntu » Config==
{|
| valign="top" |
<syntaxhighlight lang="bash" highlight="15,16">
lxc restore  logrotate faketime:0.9.10
cat <<'EXE'| lxc exec logrotate -- bash
mkdir -p        /var/log/academia
chown root:root /var/log/academia
chmod 755      /var/log/academia
cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null
/var/log/academia/academia.log {
    daily
    dateext
    dateformat -%Y-%m-%d
    rotate 90
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
}
CFG
EXE
</syntaxhighlight>
| valign="top" |
<syntaxhighlight lang="bash" highlight="15,16" line>
lxc restore  logrotate faketime:0.9.10
cat <<'EXE'| lxc exec logrotate -- bash
mkdir -p        /var/log/academia
chown root:root /var/log/academia
chmod 755      /var/log/academia
cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null
/var/log/academia/academia.log {
    daily
    dateext
    dateformat -%Y-%m-%d
    rotate 90
    missingok
    notifempty
    compress
    copytruncate
}
CFG
EXE
</syntaxhighlight>
|-
| colspan="2" |
----
|-
| valign="top" |
<syntaxhighlight lang="bash" highlight="15,16,19-35">
lxc restore  logrotate faketime:0.9.10
cat <<'EXE'| lxc exec logrotate -- bash
mkdir -p        /var/log/academia
chown root:root /var/log/academia
chmod 755      /var/log/academia
cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null
/var/log/academia/academia.log {
    daily
    dateext
    dateformat -%Y-%m-%d
    rotate 90
    missingok
    notifempty
    nocompress
    copytruncate
    postrotate
        LOG_DIR=/var/log/academia
        ARC_MOS="$(date +'%Y/%Y-%m')"
        ARC_DIR="${LOG_DIR}/${ARC_MOS}"
        mkdir -p ${ARC_DIR}
        chown -R root:root ${LOG_DIR}/
        find ${LOG_DIR}/ -type d -exec chmod 755 {} \;
        find ${LOG_DIR}/ -type f -exec chmod 644 {} \;
        for LOG in ${LOG_DIR}/academia.log-*;do
            [ -e "${LOG}" ] || continue
            gzip ${LOG};mv ${LOG}.gz ${ARC_DIR}/
        done
        find ${LOG_DIR}/ -mindepth 3 -maxdepth 3 -type f -name '*.gz' -mtime +90 -delete
        find ${LOG_DIR}/ -mindepth 2 -maxdepth 2 -type d -empty -delete
        find ${LOG_DIR}/ -mindepth 1 -maxdepth 1 -type d -empty -delete
    endscript
}
CFG
EXE
</syntaxhighlight>
| valign="top" |
<syntaxhighlight lang="bash">
</syntaxhighlight>
|}
==LXC » Logrotate » Ubuntu » Rotate==
<syntaxhighlight lang="bash">
cat <<'EXE'| lxc exec logrotate -- bash
for DAYS_AGO in {0..90};do
cat << LOG | tee -a /var/log/academia/academia.log >/dev/null
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin signed up
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /home
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /setting
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /sales/report
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /payment/maybank2u
LOG
if [ "${DAYS_AGO}" != "0" ];then
  faketime "$(date -d "${DAYS_AGO} days ago" +%Y-%m-%d)" logrotate -f /etc/logrotate.d/academia
fi
done
ls -ahl /var/log/academia/
EXE
</syntaxhighlight>
</syntaxhighlight>


Line 47: Line 196:
| valign="top" |
| valign="top" |
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
echo "$(date +'D%Y%m%d-T%H%M')-Z$(date +'%z'|tr '+-' 'PM')"
echo "$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
</syntaxhighlight>
| valign="top" |
<syntaxhighlight lang="bash">
echo "$(TZ=BDT-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=MYT-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
</syntaxhighlight>
| valign="top" |
<syntaxhighlight lang="bash">
echo "$(TZ=GMT-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=GMT-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
</syntaxhighlight>
|-
| colspan="3" |
----
|-
| valign="top" |
<syntaxhighlight lang="bash">
echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
</syntaxhighlight>
| valign="top" |
<syntaxhighlight lang="bash">
echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%:z')"
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%:z')"
</syntaxhighlight>
| valign="top" |
<syntaxhighlight lang="bash">
echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%z')"
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%z')"
</syntaxhighlight>
|-
| colspan="3" |
----
|-
| valign="top" |
<syntaxhighlight lang="bash">
faketime 'today'      logrotate -f /etc/logrotate.d/academia
faketime 'yesterday'  logrotate -f /etc/logrotate.d/academia
faketime '2025-06-01' logrotate -f /etc/logrotate.d/academia
</syntaxhighlight>
| valign="top" colspan="2" |
<syntaxhighlight lang="bash">
find /var/log/academia/ -mindepth 3 -maxdepth 3 -type f -name '*.gz' -mtime +50 -print
find /var/log/academia/ -mindepth 2 -maxdepth 2 -type d -empty -print
find /var/log/academia/ -mindepth 1 -maxdepth 1 -type d -empty -print
</syntaxhighlight>
|-
| colspan="3" |
----
|-
| valign="top" |
<syntaxhighlight lang="bash">
find /var/log/academia/ -type d -print
find /var/log/academia/ -type f -print
</syntaxhighlight>
</syntaxhighlight>


Line 61: Line 274:
{|
{|
|valign='top'|
|valign='top'|
* [https://serverfault.com/questions/684009/ Logrotate » Advanced date in daily rotations]
* [https://stackoverflow.com/questions/8962477/ Logrotate » File Name With Date]
* [https://stackoverflow.com/questions/8962477/ Logrotate » File Name With Date]
* [https://www.redhat.com/en/blog/setting-logrotate Logrotate » Redhat]
* [https://www.redhat.com/en/blog/setting-logrotate Logrotate » Redhat]

Latest revision as of 03:06, 10 June 2025

LXC » Logrotate » Alpine

lxc image ls images:alpine/3.21
lxc rm -f    logrotate 2>/dev/null
lxc launch   images:alpine/3.21 logrotate

lxc delete   logrotate/alpine:3.21 2>/dev/null
lxc snapshot logrotate alpine:3.21
lxc export   logrotate logrotate_alpine-20250523.tar.gz --optimized-storage

lxc rm -f    logrotate 2>/dev/null
lxc import   logrotate logrotate_alpine-20250523.tar.gz logrotate
lxc start    logrotate

lxc restore  logrotate alpine:3.21
lxc info     logrotate

LXC » Logrotate » Ubuntu

lxc image ls ubuntu:24.04
lxc rm -f    logrotate 2>/dev/null
lxc launch   ubuntu:24.04 logrotate

lxc delete   logrotate/ubuntu:24.04 2>/dev/null
lxc snapshot logrotate ubuntu:24.04
lxc export   logrotate logrotate_ubuntu-20250604.tar.gz --optimized-storage

lxc rm -f    logrotate 2>/dev/null
lxc import   logrotate_ubuntu-20250604.tar.gz logrotate
lxc start    logrotate

lxc restore  logrotate ubuntu:24.04
lxc info     logrotate

cat <<'EXE'| lxc exec logrotate -- bash
echo;apt-get update;echo
apt-get install -y logrotate faketime;echo;apt-get clean
EXE

lxc delete   logrotate/faketime:0.9.10 2>/dev/null
lxc snapshot logrotate faketime:0.9.10
lxc export   logrotate logrotate_faketime-20250604.tar.gz --optimized-storage

lxc rm -f    logrotate 2>/dev/null
lxc import   logrotate_faketime-20250604.tar.gz logrotate
lxc start    logrotate

lxc restore  logrotate faketime:0.9.10
lxc info     logrotate

LXC » Logrotate » Ubuntu » Config

lxc restore  logrotate faketime:0.9.10
cat <<'EXE'| lxc exec logrotate -- bash
mkdir -p        /var/log/academia
chown root:root /var/log/academia
chmod 755       /var/log/academia

cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null
/var/log/academia/academia.log {
    daily
    dateext
    dateformat -%Y-%m-%d
    rotate 90
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
}
CFG
EXE
lxc restore  logrotate faketime:0.9.10
cat <<'EXE'| lxc exec logrotate -- bash
mkdir -p        /var/log/academia
chown root:root /var/log/academia
chmod 755       /var/log/academia

cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null
/var/log/academia/academia.log {
    daily
    dateext
    dateformat -%Y-%m-%d
    rotate 90
    missingok
    notifempty
    compress

    copytruncate
}
CFG
EXE

lxc restore  logrotate faketime:0.9.10
cat <<'EXE'| lxc exec logrotate -- bash
mkdir -p        /var/log/academia
chown root:root /var/log/academia
chmod 755       /var/log/academia

cat <<'CFG'| tee /etc/logrotate.d/academia >/dev/null
/var/log/academia/academia.log {
    daily
    dateext
    dateformat -%Y-%m-%d
    rotate 90
    missingok
    notifempty
    nocompress

    copytruncate
    postrotate
        LOG_DIR=/var/log/academia
        ARC_MOS="$(date +'%Y/%Y-%m')"
        ARC_DIR="${LOG_DIR}/${ARC_MOS}"

        mkdir -p ${ARC_DIR}
        chown -R root:root ${LOG_DIR}/
        find ${LOG_DIR}/ -type d -exec chmod 755 {} \;
        find ${LOG_DIR}/ -type f -exec chmod 644 {} \;

        for LOG in ${LOG_DIR}/academia.log-*;do
            [ -e "${LOG}" ] || continue
            gzip ${LOG};mv ${LOG}.gz ${ARC_DIR}/
        done

        find ${LOG_DIR}/ -mindepth 3 -maxdepth 3 -type f -name '*.gz' -mtime +90 -delete
        find ${LOG_DIR}/ -mindepth 2 -maxdepth 2 -type d -empty -delete
        find ${LOG_DIR}/ -mindepth 1 -maxdepth 1 -type d -empty -delete
    endscript
}
CFG
EXE

LXC » Logrotate » Ubuntu » Rotate

cat <<'EXE'| lxc exec logrotate -- bash
for DAYS_AGO in {0..90};do
cat << LOG | tee -a /var/log/academia/academia.log >/dev/null
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin signed up
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /home
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /setting
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /sales/report
$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z') academia user: admin, page: /payment/maybank2u
LOG

if [ "${DAYS_AGO}" != "0" ];then
  faketime "$(date -d "${DAYS_AGO} days ago" +%Y-%m-%d)" logrotate -f /etc/logrotate.d/academia
fi
done

ls -ahl /var/log/academia/
EXE

Playground

INET_PATH='.[].state.network.[].addresses[]|select(.family=="inet" and .scope=="global").address'
INET_ADDR=$(lxc list name=logrotate -f=yaml|yq  -r "${INET_PATH}")
apk cache clean
rm -vrf /var/cache/apk/*

echo "$(date +'D%Y%m%d-T%H%M')-Z$(date +'%z'|tr '+-' 'PM')"
echo "$(date --utc +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=BDT-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=MYT-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=GMT-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=GMT-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"

echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N%:z')"
echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%:z')"
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%:z')"
echo "$(TZ=UTC-8 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%z')"
echo "$(TZ=UTC-6 date +'%Y-%m-%dT%H:%M:%S.%6N %Z%z')"

faketime 'today'      logrotate -f /etc/logrotate.d/academia
faketime 'yesterday'  logrotate -f /etc/logrotate.d/academia
faketime '2025-06-01' logrotate -f /etc/logrotate.d/academia
find /var/log/academia/ -mindepth 3 -maxdepth 3 -type f -name '*.gz' -mtime +50 -print
find /var/log/academia/ -mindepth 2 -maxdepth 2 -type d -empty -print
find /var/log/academia/ -mindepth 1 -maxdepth 1 -type d -empty -print

find /var/log/academia/ -type d -print
find /var/log/academia/ -type f -print

References