WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Log rotation (https://www.wn.se/forum/showthread.php?t=20099)

gjohansson 2007-03-20 14:12

Nu börjar mina Apache-access loggfiler blir alldeles för stora för att hantera och jag blev förvånad över att Apache inte har inbyggd log rotation. :(

Nu undrar jag lite hur ni har gjort för att lösa detta? Speciellt ni som kör Windows miljö som jag gör.

gjohansson 2007-03-20 14:21

Citat:

Originally posted by Kjette@Mar 20 2007, 15:14
Vi sparar Access loggar som vi kan komma åt flera månader tillbaka, varje månad så rensas loggarna i själva Apahce mappen och görs om till gzip format, och har du en loggfil på några GB så blir dom bara några MB.

och hur gör ni detta? stänger ni ner Apache och flyttar log-filerna? Kör ni Windows-miljö?

Oskar Lindgren 2007-03-20 16:51

I unixmiljö kan du tömma loggfilen med följade kommando.

Citat:

echo>/p/a/t/h/access_log

SimonP 2007-03-20 21:43

Detta är den bästa modulen som jag hittat:
http://www.apachelounge.com/download...-1.00a-w32.zip
(finns två olika, en för apache 2.0 och en för 2.2)

Jag har konfigurerat så att det skapas en ny logfil för varje månad:

domännamn-YY-MM.log

Rotatelogs.exe som följer med Win32 Apache rekommenderar jag inte, den skapar massvis med processer som ligger och jävlas...

gjohansson 2007-03-20 21:51

Citat:

Originally posted by SimonP@Mar 20 2007, 22:43
Detta är den bästa modulen som jag hittat:
http://www.apachelounge.com/download...-1.00a-w32.zip
(finns två olika, en för apache 2.0 och en för 2.2)
Jag har konfigurerat så att det skapas en ny logfil för varje månad:
domännamn-YY-MM.log
Rotatelogs.exe som följer med Win32 Apache rekommenderar jag inte, den skapar massvis med processer som ligger och jävlas...

Tack, det var det svaret jag sökte! :)

weetabix 2007-03-21 00:56

här är ett vbscript för att packa iis-loggfiler... borde vara enkelt att trixa till för dina ändamål... tar inget ansvar för funktionen :lol:

kräver winrar på maskinen...

lycka till!


EDIT: oj missade att du redan hade fått hjälp... aja.. kanske är bra med nåt alternativ :)

Kod:

Option Explicit

'Installation
'-------------
'Update the following settings to relect the setup of your webserver
'
'This value should be set to the name of your server. Keep this to the same format
'as the example value.

Const serverName="7.0.0.1\"


'This value should be set to the root path to all of the domains on the webserver.
'Keep this to the same format as the example value. If you have more than one location
'of website folders you can have multiple copied of this script running for each location

Const DomainPath="c$\Domains\"


'This value sets the number of days worth of logs that should be kept. Any log files,
'either compressed or uncompressed, will by removed if they are older than the number of
'days set.

Const RemoveOlderThan=190

'This value sets the number of days worth of logs that should be kept unarchived. Any log files,
'uncompressed, will by compressed if they are older than the number of
'days set.

Const ArchiveOlderTHan=2

'To complete this application installation type in the following command into the
'command prompt so that the application runs within a command prompt instead of producing
'hundreds of message boxes:
'        cscript //h:cscript
'
'The final step is to add this script into the Windows scheduled tasks. It's best not to set
'this script to run too close to midnight as Helm may be collecting log information at this time.
'Generally the quietest hosting time is around 6-7am.
'**********************************************************************************



Dim fso, fDomDir, fLogDir, fLog, todayDate

todayDate=cDate(day(now) &" "& MonthName(Month(Now),true) &" "& Year(Now))
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(serverName & DomainPath) Then
  RaiseError "Can Not Find Domain Folder"
Else
  getDomainStats
End If

set fso=Nothing


'================Functions==============

Private Sub GetDomainStats()
  Dim WshShell, CABReturnCode, CABCommand
  Dim fileDate
  Set WshShell = WScript.CreateObject("WScript.Shell")
  For Each fDomDir in fso.GetFolder(serverName & DomainPath).SubFolders
  DebugOut("Checking Domain "& UCase(fDomDir.Name))
  If fso.FolderExists(fDomDir.Path &"\Logs") Then
    For Each fLogDir in fso.GetFolder(fDomDir.Path &"\Logs").SubFolders
      For Each fLog in fLogDir.Files
        If UCase(Left(fLog.Name,2))="EX" And UCase(Right(fLog.Name,4))=".ZIP" Then
        fileDate=cDate(Mid(fLog.name,3,2) &" "& monthname(cint(Mid(fLog.name,5,2)),true) &" "& Mid(fLog.name,7,2))
        If fileDate< DateAdd("d", toDayDate, -RemoveOlderThan) Then
          DebugOut("Deleting "& flog.name)
          fLog.Delete
        End If
        ElseIf UCase(Left(fLog.Name,2))="EX" And UCase(Right(fLog.Name,4))=".LOG" Then
        fileDate=cDate(Mid(fLog.name,3,2) &" "& monthname(cint(Mid(fLog.name,5,2)),true) &" "& Mid(fLog.name,7,2))
        If fileDate< DateAdd("d", toDayDate, -RemoveOlderThan) Then
          DebugOut("Deleting "& flog.name)
          fLog.Delete
        Else
          '---CAB logfile----
          if fileDate < DateAdd("d", toDayDate, -ArchiveOlderTHan) Then
              CABCommand = """C:\Program Files\WinRAR\rar.exe"" a " & Left(fLog.Path,Len(fLog.Path)-3) & "rar" & " " & fLog.Path
            wscript.echo cabcommand
CABReturnCode = WshShell.Run(CABCommand, 7, True)
          If (Err.Number <> 0) Then
            RaiseError Err.Description & " (" & Err.Number & ")"
          ElseIf (CABReturnCode <> 0) Then
            RaiseError "Return code from WZZIP.EXE was " & CABReturnCode
          Else
            fLog.Delete
          End If
        End If
        End If
        '---Done---
        End if
      Next
    Next
  Else
    RaiseError "Can Not Find The Log Folder"
  End If
  Next
  Set WshShell=Nothing
End Sub

Private Sub DebugOut(strDebugText)
  WScript.Echo strDebugText
End Sub


Private Sub RaiseError(strErrText)
  WScript.Echo "ERROR: "& strErrText
End Sub


eliasson 2007-03-21 10:06

usch, jag får nästan kräkningar när jag ser syntaxen :)

gjohansson 2007-03-21 12:21

Citat:

Originally posted by weetabix@Mar 21 2007, 01:56
här är ett vbscript för att packa iis-loggfiler... borde vara enkelt att trixa till för dina ändamål... tar inget ansvar för funktionen
kräver winrar på maskinen...
lycka till

EDIT: oj missade att du redan hade fått hjälp... aja.. kanske är bra med nåt alternativ

Det gör inget.
Alla (Windows) lösningar är intressanta för mig, tack! :)

totoo 2007-03-21 15:42

Citat:

Originally posted by SimonP@Mar 20 2007, 22:43
Detta är den bästa modulen som jag hittat:
http://www.apachelounge.com/download/mods/...e-1.00a-w32.zip
(finns två olika, en för apache 2.0 och en för 2.2)

Jag har konfigurerat så att det skapas en ny logfil för varje månad:

domännamn-YY-MM.log

Rotatelogs.exe som följer med Win32 Apache rekommenderar jag inte, den skapar massvis med processer som ligger och jävlas...

jag är helt talanglös på allt var serverkonfiguration heter.

Jag får inte detta att funka.

Servern vägrar starta pga detta, eller får meddelande av tjänstehanteraren att den startades och stängdes av igen.

Men jag fattar inte vad jag ska göra med manifestfilen. Ska den bara ligga sådär? Eller ska den döpas om eller hanteras på något sätt? Jag fattade inte vad jag installerade visual studiogrejen/whatever för. :)

Sen fattar jag inte var man ställer in inställningarna för modulen heller...

Skapligt lost.

Deras readme är lätt inte anpassad för nån som inte fattar ett skit om servrar. :)

totoo 2007-03-21 18:09

inget alls vad jag vet. Eller var slänger apache ut sina interna errors? I error.log finns iaf inget.

Men jag fattar fortfarande inte var man ställer in de där inställningarna. :)
Jag har slängt in binäfilen och modulen i respektive mapp och aktiverat modulen conf-filen. Det är allt. :)


Alla tider är GMT +2. Klockan är nu 23:10.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson