Hi Daniel,

     Note that we already support your first solution via syslog (for 
traffic.out and 
diags.log) -- you can set a different backend for log types/priorities
(check out proxy.config.diags.output.<priority>

Regarding the second option -- If the logging volume is small you 
can probable get by with logrotate (with the copytruncate option), if 
it's high and you can't afford to lose a couple of lines then you'll 
need a significant internal buffer...

     Cheers,
            Uri

On Thu, 18 Jun 2015 00:28:16 +0000 Daniel Xu <danie...@yahoo-inc.com.INVALID> 
wrote:
> Background
> Yahoo JIRA issue    Apache JIRA issue (TS-306)Currently, there is no log 
> rotation implemented for traffic.out, diags.log, and manager.log. Each of 
> those files is logged into using a different and unique way. This is in 
> contrast to the logging subsystem used to record the proxy accesses and 
> errors, which implements rotation. For example, the following files can be 
> written into in these ways. Note: these are not the only ways the files are 
> written into.
> traffic.out:Logs that are sent to stdout and stderr are forwarded to 
> traffic.out
> diags.log:Everything logged by using the Diags macros (Note(..), Error(..), 
> …) are put into diags.log
> manager.log:traffic_manager logs its messages with fprintf’s and 
> mgmt_{log,elog,fatal,..} functions (which are deprecated) from 
> mgmt/utils/MgmtUtils.h. Some of those messages find their way into manager.log
>
> Problem
> Since those files aren’t being rotated, they can get too large for various 
> reasons (core, naughty plugins, proxy, etc). Furthermore, the lack of a 
> unified logging system makes changes to the logging infrastructure more work 
> than one would expect.
>
> Solutions
> To solve these problems, we have a couple options:
>
> - Pipe logs from traffic.out, diags.log, and manager.log into a 3rd party 
> logging utility [1]
>
> - Pros
>
> - Virtually no changes to existing code base
> - Easy
> - Apache httpd & daemon tools already do this
>
> - Cons
>
> - Not an elegant solution
>
> - Use the trafficserver script to spawn a daemon that periodically “stops the 
> world” (ie the logs wouldn’t flush) for all logging calls, and rotates the 
> files [1]
>
> - Pros
>
> - No difficult changes need to be made the current infrastructure, we would 
> only need to figure out how to 1) “stop the world” and 2) reload file 
> descriptors
>
> - Cons
>
> - It’s hard to say how big the interim buffer (for holding all the logs while 
> the world stops) should be
> - Not the most elegant solution
>
> - Reuse the proxy logging infrastructure, and make a LogObject managed by the 
> proxy’s global LogObjectManager for each of the log files we want to 
> implement rotation for.
>
> - Pros
>
> - No repeated code
> - We would have a unified logging infrastructure
>
> - Cons
>
> - Significant changes to code base
> - Would be difficult to log events before the proxy logging infrastructure 
> starts up [2]
>
> Comments
> James Peach has previously mentioned that log rotation for diags.log should 
> be implemented the same as all other rotated log files here
>
>
> ----------
> [1] Kang Li; earlier proposal 
> https://docs.google.com/document/d/1c9E0i8N3krL3msiHOLpgR99UzNUAt5N6FP1L3W3ghGs
> [2] http://articles.qos.ch/internalLogging.html

                                          

Reply via email to