natefinch / lumberjack

lumberjack is a log rolling package for Go
MIT License
4.79k stars 591 forks source link

Log Rotator not working when passing file as variable #104

Closed ankurnigam closed 2 years ago

ankurnigam commented 4 years ago

Hi Team,

I am passing filename as variable in function but it seems log rotator is not working .Here is the snippet of my code:

logfile := logdir + "/monitoring.log" log.SetOutput(&lumberjack.Logger{ Filename: logfile, MaxSize: 5, // megabytes MaxBackups: 3, })

ankurnigam commented 4 years ago

I have 500MB of existing file .Is this is the reason it's not working.

ankurnigam commented 4 years ago

I tried with 0 bytes file and extended it till 5 MB still not working

natefinch commented 4 years ago

This is a pretty simple case. Try using os.Stat to make sure logdir is pointing where you expect.

ankurnigam commented 4 years ago

logdir is correct this is the reason file is getting recreated and updated as I am passing this variable in lot of functions.

Only thing what I did here is that .

logdir = /home/oracle

and I am running this script as root user using below command :

su oracle -c "script name"

Can it cause function not to work.

natefinch commented 4 years ago

Oh hey, you said this file is getting recreated and updated? You can't update the file from other places, or lumberjack won't work. The way lumberjack works is that it tracks how many bytes it has written to the file, and the initial size of the file, so it knows when to roll the file over. If you're changing the file out from under it, it won't work right.

ankurnigam commented 4 years ago

I mean in same program I am calling this file to update logs .So related to directory ,there should not be any issue.

Whatever update is happening it's doing from same program ,there is no manual update in this file or from any other program.

I am suspecting since file location is under /home/oracle and I am running the program using root user "su oracle -c "Program Name"" somehow this lumberjack package is not working.

I am not sure if we have tested this used case.

natefinch commented 4 years ago

is data getting written to the file at all? If not, my guess is that it's a permission issue, or either the wrong file is being written to, or you're looking at the wrong file.