লোগ্রোটেটের সাহায্যে লগগুলি কীভাবে সংকুচিত করতে হবে এবং পরিষ্কার করতে হবে তবে সেগুলি ঘোরানো যায় না


10

আমার কাছে টমক্যাট সার্ভার রয়েছে যা ভাল্বের মাধ্যমে অ্যাক্সেস লগ তৈরি করে ( org.apache.catalina.valves.FastCommonAccessLogValve )। এই ভালভ অ্যাক্সেস লগ ফাইলটি ঘোরানোর ক্ষেত্রে যত্নশীল, তবে তাদের সংকোচনের বা কিছু সময়ের পরে সেগুলি মুছে ফেলার নয়।

এই মুহুর্তের জন্য, আমার কাছে ক্রোন জব রয়েছে যা find [...] -mtime +30 [...]লগগুলি সংকুচিত করতে এবং মুছতে ব্যবহার করে। আমি বরং লোগ্রোটেট ব্যবহার করব, যাতে লগ রোটেশন সমস্ত লগের জন্য কেন্দ্রীভূত জায়গায় থাকে। আমি শুধু টমক্যাটের জন্য পৃথক সমাধান চাই না।

আমি লোগ্রোটেট ডকুমেন্টেশন পড়ার চেষ্টা করেছি, তবে আমি এখনও কিছুটা হারিয়েছি। লগ ফাইলগুলি সঙ্কুচিত করতে এবং পরিষ্কার করার জন্য আমি লোগ্রোটেট ব্যবহার করতে পারি? আমি যে কিভাবে করতে হবে ?

বা সমস্যাটিকে ঘুরিয়ে দিচ্ছেন, এমন কোনও টমক্যাট অ্যাক্সেস লগ ভালভ যা লগ ফাইলগুলি সংকুচিত করবে এবং সাফ করবে?

আপনার সাহায্যের জন্য ধন্যবাদ !


বিটিডাব্লু: ফাস্টকমনঅ্যাক্সেসলগভালভ 6.0 টমকাট.এপাচি.আর.এ.
টমকাট

উত্তর:


17

আমি দেখতে পেয়েছি যে মোটামুটি সহজ works

নিম্নলিখিত ফাইলগুলি টমক্যাট নামে একটি ফাইল তৈরি করুন: -

/var/log/tomcat/catalina.out { 
  copytruncate 
  daily 
  rotate 7 
  compress 
  missingok 
}

এটি প্রতিদিন সঞ্চালিত হয় , ফাইলটি সংকুচিত করে, এবং 7 দিনের মূল্য রাখে ( 7 ঘুরান )। copytruncate এর অর্থ এটি অনুলিপি করে তারপরে মূল ফাইলটি কেটে ফেলবে যাতে টমক্যাটটি পুনরায় চালু করার দরকার নেই। না থাকলে ঠিক আছে ত্রুটি হবে না।

অ্যাক্সেস.লগ ভালভকে ঘূর্ণনযোগ্য = মিথ্যা যোগ করে ঘোরানো না হয়ে পরিবর্তন করা যেতে পারে: -

<Valve className="org.apache.catalina.valves.AccessLogValve
     ...
     ...
     suffix="log" rotatable="false" />

1
আমার সমস্যাটি হ'ল ক্যাটালিনা.আউটের বিপরীতে, আমার অ্যাক্সেস লগটি ইতিমধ্যে ঘোরানো হয়েছে।
গিলাইম

3
ঠিক আছে, ভালভ আর্গুমেন্টে ঘূর্ণনযোগ্য = মিথ্যা সেট করে অ্যাক্সেস লগ রোটেশনটি অক্ষম করা যেতে পারে। এটি অন্তর্ভুক্ত করতে জবাব দেওয়া।
ডেকাডো

2

পরিবর্তিত টিমপির স্ক্রিপ্ট - খুব পুরানো ফাইল মুছে ফেলা, পুরানো সংকোচিত ফাইলগুলির জন্য স্ক্যান যুক্ত করা হয়েছে।

#!/bin/bash
#
# TPP 2013-02-21
# RJK 2014-08-14
#
# Tomcat apps use a variety of loggers, mostly log4j.
# These rotate, conflicting with logrotate, the unix log rotation system.
#
# Some files eg catalina.out
# are rotated to a backup containing a date eg catalina.2013-01-06.log
# which can then be compressed with bz2 to catalina.2013-01-06.log.bz2
# or removed if older than a given number of days(MTIME).
#
cd /var/log/tomcat6
# 2013-02-21
DATE=`date --rfc-3339=date`
YEAR=`date +%Y`
MILLENIUM=20
# 2014-08-14
MTIME=14
# 2014-08-14
#for f in $(find catalina* |grep -v bz2 |grep -v '$DATE' |grep $YEAR)
for f in $(find catalina* |grep -v bz2 |grep -v '$DATE' |grep $MILLENIUM)
do
 # 2014-08-14
 if test `find $f -mtime +$MTIME`
 then
   echo "rm -f $f"
   rm -f $f
 else
   echo "bzip2 $f"
   bzip2 $f
 fi
done
# However others are active whilst containing a date
# so we will find all and not compress the most recent
for l in 'localhost*' 'opt-db*' 'opt*' 'host-manager*' 'manager*'
do
 export previous=
 for f in $(find $l |grep -v bz2 |sort)
 do
  if [ "${previous}" != "" ]
  then
    echo "bzip2 ${previous}"
    bzip2 $previous
  fi
  export previous=$f
 done
done
# 2014-08-14
for f in $(find *bz2)
do
 if test `find $f -mtime +$MTIME`
 then
   echo "rm -f $f"
   rm -f $f
 fi
done
exit 0 

1

আমি টমকাট কনফিগারেশনটি পরিবর্তন করতে চাইনি, তাই এমন স্ক্রিপ্ট তৈরি করলাম যা ঘোরানো ফাইলগুলিকে সংকুচিত করে

#! / বিন / ব্যাশ
#
# টিপিপি 2013-02-21
#
# টমকেট অ্যাপ্লিকেশনগুলি বিভিন্ন ধরণের লগার ব্যবহার করে, বেশিরভাগ লগ 4 জে।
# এই ঘোরান, লোগ্রোটেটের সাথে বিরোধী, ইউনিক্স লগ রোটেশন সিস্টেম। 
#
# কিছু ফাইল যেমন catalina.out
# একটি তারিখযুক্ত ব্যাকআপে আবর্তিত হয় যেমন ক্যাটালিনা -0-০১-০6.লগ log
# যা পরে bz2 থেকে ক্যাটালিনা পর্যন্ত সংকোচিত হতে পারে-03-01-06.log.bz2
#

সিডি / ভার / লগ / টমক্যাট 6

# 2013-02-21
তারিখ = `তারিখ --rfc-3339 = তারিখ`
YEAR = `তারিখ +% Y``

f এ $ এর জন্য (ক্যাটালিনা সন্ধান করুন * | গ্রেপ-ভি bz2 | গ্রেপ-ভি 'ATE তারিখ' | গ্রেপ $ ইয়ার)
করা
 প্রতিধ্বনি "bzip2 $ f" 
 bzip2 $ f
সম্পন্ন

# তবে অন্যেরা একটি তারিখ সহ সক্রিয় থাকে
# সুতরাং আমরা সমস্ত খুঁজে পাব এবং সাম্প্রতিকতমটি সংকোচন করব না
এল এর জন্য 'লোকালহোস্ট *' 'অপ্ট-ডিবি *' 'অপ্ট *' 'হোস্ট-ম্যানেজার *' 'ম্যানেজার *'
করা
 পূর্ববর্তী রফতানি =
 f এ in এর জন্য (সন্ধান করুন $ l | গ্রেপ-ভি bz2 | সাজান)
 করা
  যদি ["$ {পূর্ববর্তী}"! = ""]
  তারপর
    প্রতিধ্বনি "bzip2 $ {পূর্ববর্তী}" 
    bzip2 $ পূর্ববর্তী
  ফাই
  এক্সপোর্ট পূর্ববর্তী = $ চ
 সম্পন্ন
সম্পন্ন

প্রস্থান 0


1

এটা আশ্চর্যজনকভাবে সহজ। আপনি লোগ্রোটেটকে বলুন যে আপনি বিশেষত কোন ফাইলগুলি ঘোরান। nocreateপুরানো ফাইলটি সরিয়ে দেওয়ার পরে লগরোজেটকে খালি ফাইলটি পুনরায় তৈরি করতে না বলায় (যদি আপনি ফাইলগুলিকে সাবফোল্ডারে ঘুরছেন)।

/var/log/tomcat/catalina.out.* { 
  daily 
  nocreate
  compress 
  missingok 
}

0

স্থানীয়_অ্যাক্সেস_লগের জন্য YYYYY-MM-DD.txt সংক্ষেপে এই পোস্টটি দেখার পরে আমি এই স্ক্রিপ্টটি লিখেছিলাম: -

#!/bin/bash
#
# If Tomcat uses server.xml config to rotate localhost_access_log,
# the daily rotated logs will need compressing and old ones deleted to stop filling
# the log partiton. Cannot use the system logrotate command as conficts with tomcat rotate
# therefore run this script in a daily cronjob
#
# localhost_access_log.2015-09-03.txt
#
# Add this script in /etc/cron.daily/ owned by root
#

CATALINA_BASE=`ps aux | grep catalina.base | awk -F'catalina.base\=' '{print $2}' | awk '{print $1}'`

if [ ! $CATALINA_BASE ]
then
    if [ -r /var/lib/tomcat8 ]
    then
        CATALINA_BASE=/var/lib/tomcat8
    else
        echo "Error: cannot find CATALINA_BASE"
        exit 1
    fi
fi

cd ${CATALINA_BASE}/logs

if [ $? -ne 0 ]
then
    echo "Error, cannot cd to logs directory, quitting...."
    exit 1
fi

# today's date (not to be gzipped)
DATE=`date --rfc-3339=date`
# number of days to keep
MTIME=28

# Compress all previous days uncompressed logs
for log in `ls localhost_access_log* | grep -v bz2 | grep -v $DATE`
do
    bzip2 $log
done

# delete old logs
find . -name "*.bz2" -mtime +$MTIME -exec rm {} \;

exit 0

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.