2010-05-14 11 views

Respuesta

0

Cambie el nombre del archivo a diferentes nombre de archivo y crear un nuevo archivo con el nombre access_log y reiniciar Apache (Apache otra manera mantiene el bloqueo en el archivo y no "ver" el cambio de archivos)

+0

he probado esto. Apache sigue escribiendo en el archivo grande que tiene un nuevo nombre. – Liam

0

Cambie el nombre del archivo, cree un nuevo access_log, a continuación, reinicie Apache.

5

Si tiene acceso por SSH al servidor, entonces usted puede:

1) gzip el archivo antiguo (relaciones de compresión de archivos de texto son muy buenos). Si asumimos que el archivo se llama /var/log/apache/access.log luego hacer esto:

gzip -c /var/log/apache/access.log > /var/log/apache/access.log.gz

2) Borrar el archivo actual

echo > /var/log/apache/access.log

3) Reinicie apache

también como Dez ha sugerido considerar el uso de logrotate para el grado de producción de archivado de registro de Apache.

14

knx'answer es bueno, pero yo sugeriría cambiar el nombre del registro, y crear uno nuevo, por lo que se puede reiniciar apache sin esperar a que el registro de acceso para ser comprimido, que puede tomar un tiempo si es grande.

necesita tener acceso a ssh

En primer lugar, cambiar el nombre del archivo de registro actual:

mv /var/log/apache/access.log /var/log/apache/access.log.1 

En segundo lugar, crear un nuevo archivo de registro y dar los mismos permisos, el propietario/grupo y el contexto SELinux que la original :

touch /var/log/apache/access.log 
chown --reference=/var/log/apache/access.log.1 /var/log/apache/access.log 
chmod --reference=/var/log/apache/access.log.1 /var/log/apache/access.log 
restorecon --reference=/var/log/apache/access.log.1 /var/log/apache/access.log 

(probablemente tenga que ser root para hacer eso)

A continuación, reinicie Apache

Luego, Gzip guarda el archivo anterior (las relaciones de compresión de los archivos de texto son realmente buenas). Si asumimos que el archivo se llama /var/log/apache/access.log luego hacer esto:

gzip -c /var/log/apache/access.log.1 > /var/log/apache/access.log.1.gz 

estos 4 puntos son lo Logrotate hacer automáticamente.

+0

No necesita jugar con permisos, simplemente copie el archivo y vacíe el archivo anterior. "cp access.log access.log.1 &&> access.log" – CoolArts

+0

@CoolArts copiar archivos de registro de 200 GB lleva tiempo y requiere un extra de 200 GB (a partir de la pregunta) y eso también deja el problema que apache sigue escribiendo al archivo de registro mientras se está copiando y vaciando, por lo que la pérdida potencial de datos. – Thomas

+0

¿Por qué no podemos simplemente eliminar y tocar un nuevo archivo de acceso como en algunas de las respuestas a continuación? – VisWebsoft

1

Si lo hacen en Ubuntu:

sudo su 
cd /var/log/apache2 
rm access.log 
rm error.log 
touch access.log 

Al crear registro de acceso que mágicamente se inicia el registro de errores también.

0

Sé que esta publicación es muy antigua, pero acabo de tener el mismo problema y ninguna respuesta lo cubre correctamente.

El punto es que apache crea el archivo como access_log, según su configuración. Sin embargo, logrotate solo busca *.log, por lo que el nombre no coincide con el patrón de búsqueda.

Soluciones: O agrega *_log para iniciar sesión en la configuración, o cambie la configuración de Apache para que cree el archivo de registro llamado access.log. Cambiar la configuración de Apache requiere una recarga de apache.

Cuestiones relacionadas