Hi, I have come up with a problem of loading a VFSLogFilePatternReceiver in Chainsaw. Even though it is added to the 'known.receivers' file it is not shown on the list of receivers in the Receivers panel. I tried it through an external configuration file too. But in that case also, a separate tab is not stared on the log panel. Is that a bug in Chainsaw or something wrong in my local settings?
Thanks, ~Isuru On 5/29/07, Isuru Suriarachchi <[EMAIL PROTECTED]> wrote:
Hi, Okay then ill send you the patch with those improvements and we can do any further modifications if needed. On 5/29/07, Paul Smith < [EMAIL PROTECTED]> wrote: > > that sleep level should be a receiver configurable setting too. A > default of 5 seconds is good, and perhaps we should have per-remote resource > type defaults. that is, perhaps 1 second is ok as a default for files, but > 5 seconds seems a nice default for other classes of remote protocols (http, > sftp etc). > Not sure what the overhead is in VFS for gaining access to the > RandomAccessContent object. Be interesting to profile that. Do you have > access to a Profiler tool like Yourkit ? > I downloaded this YourKit tool and ill try to use it and check the overheads of RandomAccessContent... Thanks, ~Isuru cheers, > > Paul > On 29/05/2007, at 10:25 AM, Scott Deboy wrote: > > Looks good..I'd suggest doing a file.exists on the 1st line of the do > loop & reset the pointer to zero if it's false, sleep for 5 secs, and > continue.. > > Will help folks like me who use apps which truncate a log file on app > start. > > > Scott Deboy > COMOTIV SYSTEMS > 111 SW Columbia Street Ste. 950 > Portland, OR 97201 > > Telephone: 503.224.7496 > Cell: 503.997.1367 > Fax: 503.222.0185 > > [EMAIL PROTECTED] > > www.comotivsystems.com > > > > -----Original Message----- > From: Isuru Suriarachchi [mailto:[EMAIL PROTECTED] <[EMAIL PROTECTED]>] > Sent: Mon 5/28/2007 7:00 AM > To: Log4J Developers List > Subject: GSoC Project : Enhancing Chainsaw > > Hi Scott and Paul, > > I have been working on my first task to fix the tailing capability of > VFS > log receiver, for last few days. First of all I would like to describe > why > tailing is not working in the current implementation as I understand and > then I will suggest my solution. > > Current Implementation > In the current implementation, in VFSLogFilePatternReceiver, VFSReader > creates a FileSystemManager and makes a FileObject by giving the file > URL > using the created FileSysemManager. After that it creates an > InputStreamReader to read the log file and passes it to the > process(reader) > method in the LogFilePatternReceiver in log4j. In this process() method, > a > BufferedReader is created using the reader passed and this > BufferedReader is > checked for new lines (new logs in the log file), until 'tailing' is > kept > true. > This works for URLs in the local file system (Eg: file:///foo/bar.log ) > as > the BufferedReader is updated whenever a new line is written to the > file. > But when the log file is accessed through some other protocol, say http, > this Buffered reader is not updated through the protocol when new lines > are > added to the log file. That's why tailing is not working with such a > protocol. > > My Solution > As I can see, keeping only the InputStreamReader of the file in the > method > we run the while loop (the loop which runs until 'tailiing' is kept > true) is > not going to work. And also we can't pass a FileObject to the process() > method as it is a method in a standardized interface. So I think the > above > while loop should run inside VFSReader (in VFSLogFilePatternReceiver) in > > which we have the access to the FileObject of the log file. Then we can > get > this working by getting the randomAccessContent of the log file, inside > the > while loop and seeking for the line pointed by the file pointer. > > According to the method proposed by Mario on the VFS team, this can be > done > in the following manner. > > //This part comes inside the VFSReader class... > long lastFilePointer = 0; > do > { > RadomAccessContent rac = FileObject.getRandomAccessContent() > rac.seek(lastFilePointer) > reader = new InputStreamReader(rac.getInputStream()); > process(reader); > lastFilePointer = rac.getFilePointer(); > rac.close(); > }while (isTailing()); > > Here, as the while loop is taken out of the process() method, > activateOptions() method in the LogFilePatternReceiver should also be > changed as it calls the process() method. > > If this method is okay, I can send the patch with the modifications > mentioned above. Your comments are welcome.. > > Thanks, > ~Isuru > > <winmail.dat> > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > * Paul Smith > * Core Engineering Manager > * Aconex > * The * easy* way to save time and money on your project* > > * 696 Bourke Street, Melbourne, > VIC 3000, Australia > * Tel: +61 3 9240 0200 * Fax: +61 3 9240 0299 > Email: [EMAIL PROTECTED] * www.aconex.com * > > This email and any attachments are intended solely for the addressee. > The contents may be privileged, confidential and/or subject to copyright or > other applicable law. No confidentiality or privilege is lost by an > erroneous transmission. If you have received this e-mail in error, please > let us know by reply e-mail and delete or destroy this mail and all copies. > If you are not the intended recipient of this message you must not > disseminate, copy or take any action in reliance on it. The sender takes no > responsibility for the effect of this message upon the recipient's computer > system. * * > > >