You can download the chainsaw bundle for your platform and modify the .bat file to change the -Xms and -Xmx settings to give the VM more memory.
Re: application-wide cyclic buffer value Cyclic buffering is a per-tab setting and is enabled by default. Setting the cyclic buffer to X means for each tab, only the most recently received X events will be held in memory. Disabling cyclic buffering means you will hold all received events (and eventually run out of memory). Scott On Mon, Mar 30, 2009 at 2:14 AM, Moley Harey <[email protected]> wrote: > Hi all, > > I am using Chainsaw V2 to manage log messages coming from a C++ > application, > currently the amount of messages that Chainsaw is receiving is very huge > and > so we are getting "Out of Memory" errors... > > Is there any way to increase the Java Heap Space when launching Chainsaw? I > have seen somewhere the default is 64Mb which is not ecnough for us... > > Another question, it seems that by defualt there is an option called > "cyclic > buffer" taht is set to 5000, what does this option means? Where can we > configure it? > > Thanks in advance, > > Mh > > 2009/3/26 Moley Harey <[email protected]> > > > Scott, now is working fine, thanks a lot for your quick responses! > > > > regards, > > > > Mh > > > > > > 2009/3/26 Scott Deboy <[email protected]> > > > >> You have to add the appender to your root logger.. > >> > >> <root> > >> <level value="debug"/> > >> <appender-ref ref="RollingAppender"/> > >> </root> > >> > >> Scott > >> > >> On Thu, Mar 26, 2009 at 10:51 AM, Moley Harey <[email protected]> > >> wrote: > >> > >> > Hi againScott, sorry to disturb you with this... > >> > > >> > I have added the appender in my Log4j config file and now it looks > like: > >> > > >> > <?xml version="1.0" encoding="UTF-8" ?> > >> > <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j > Configuration//EN" > >> > "log4j.dtd"> > >> > <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" > >> > debug="false"> > >> > > >> > <plugin name="XmlSocketReceiver" > >> > class="org.apache.log4j.net.XMLSocketReceiver"> > >> > <param name="active" value="false"/> > >> > <param name="decoder" value="org.apache.log4j.xml.XMLDecoder"/> > >> > <param name="name" value="NRTPXmlSocketReceiver" /> > >> > <param name="port" value="4445" /> > >> > </plugin> > >> > > >> > <appender name="RollingAppender" > >> > class="org.apache.log4j.RollingFileAppender"> > >> > <errorHandler > >> class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/> > >> > <param name="File" value="/data/logs/chainsaw.log"/> > >> > <param name="Append" value="false"/> > >> > <param name="MaxFileSize" value="20000KB"/> > >> > <param name="MaxBackupIndex" value="400"/> > >> > <layout class="org.apache.log4j.PatternLayout"> > >> > <param name="ConversionPattern" value="%d | %-5r | %-5p | %c | > >> %t:%x > >> > | %m%n"/> > >> > </layout> > >> > </appender> > >> > > >> > <root> > >> > <level value="debug"/> > >> > </root> > >> > </log4j:configuration> > >> > > >> > When I start Chainsaw, the log file chainsaw.log file is created but > >> once > >> > my > >> > application is sending messages and they get displayed in the log file > >> > nothing is saved :S > >> > > >> > Do I have to add anything else? The syntax is correct for the > appender? > >> I > >> > have followed Log4j conventions... > >> > > >> > 2009/3/26 Scott Deboy <[email protected]> > >> > > >> > > Correct - you can add appender definitions to the same Chainsaw > >> > > configuration file that contains the receiver definition, and the > >> > appenders > >> > > will process the events received by Chainsaw. > >> > > > >> > > Scott > >> > > > >> > > On Thu, Mar 26, 2009 at 10:18 AM, Moley Harey <[email protected] > > > >> > > wrote: > >> > > > >> > > > Hi Scott, > >> > > > > >> > > > 2009/3/26 Scott Deboy <[email protected]> > >> > > > > >> > > > > You can include in Chainsaw's configuration any appenders you'd > >> like, > >> > > > which > >> > > > > will cause any events received by the receivers to be propagated > >> to > >> > the > >> > > > > appenders automatically. > >> > > > > >> > > > > >> > > > How can I do that? > >> > > > What I am doing now is to launch Chainsaw and when I am prompted > at > >> the > >> > > > beginning that no receivers have been defined I select the option > >> "Let > >> > me > >> > > > search for a configuration file" and then load my config file that > >> > > contains > >> > > > the following code to define my own XmlSocketReceiver: > >> > > > > >> > > > <?xml version="1.0" encoding="UTF-8" ?> > >> > > > <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j > >> Configuration//EN" > >> > > > "log4j.dtd"> > >> > > > <log4j:configuration xmlns:log4j=" > http://jakarta.apache.org/log4j/" > >> > > > debug="false"> > >> > > > > >> > > > <plugin name="XmlSocketReceiver" > >> > > > class="org.apache.log4j.net.XMLSocketReceiver"> > >> > > > <param name="active" value="false"/> > >> > > > <param name="decoder" > value="org.apache.log4j.xml.XMLDecoder"/> > >> > > > <param name="name" value="NRTPXmlSocketReceiver" /> > >> > > > <param name="port" value="4445" /> > >> > > > </plugin> > >> > > > > >> > > > <root> > >> > > > <level value="debug"/> > >> > > > </root> > >> > > > </log4j:configuration> > >> > > > > >> > > > What you say is that is possible to define in that configuration > >> file > >> > too > >> > > > one appender that redirects all messages that the > XmlSocketReceiver > >> is > >> > > > reading and the display is showing to a text log file in the same > >> way > >> > is > >> > > > done usually in a log4j properties file with a RollingFileAppender > >> for > >> > > > example? > >> > > > > >> > > > Or do I have to define this appender in a separate file and load > it > >> too > >> > > in > >> > > > Chainsaw? > >> > > > > >> > > > > > >> > > > > > >> > > > > You can also save logging events as XML in Chainsaw via the file > >> menu > >> > > > > (note, > >> > > > > whatever events are displayed are saved, so you can apply > filters > >> if > >> > > > you'd > >> > > > > like to only save relevant messages). > >> > > > > > >> > > > > Scott > >> > > > > > >> > > > > On Thu, Mar 26, 2009 at 9:31 AM, Moley Harey < > >> [email protected]> > >> > > > wrote: > >> > > > > > >> > > > > > Hi again, > >> > > > > > > >> > > > > > I have done the following test and is working fine: > >> > > > > > > >> > > > > > 1. Update my log4cxx.properties file to send all messages > >> through a > >> > > > > > XmlSocketAppender like this: > >> > > > > > > >> > > > > > log4j.appender.A1=org.apache.log4j.net.XmlSocketAppender > >> > > > > > log4j.appender.A1.Port=4560 > >> > > > > > log4j.appender.A1.RemoteHost=127.0.0.1 > >> > > > > > > >> > > > > > 2. Launch Chainsaw with teh following configuration file that > >> > > specifies > >> > > > > it > >> > > > > > should be using an XmlSocketReceived like this: > >> > > > > > > >> > > > > > <?xml version="1.0" encoding="UTF-8" ?> > >> > > > > > <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j > >> > > Configuration//EN" > >> > > > > > "log4j.dtd"> > >> > > > > > <log4j:configuration xmlns:log4j=" > >> http://jakarta.apache.org/log4j/ > >> > " > >> > > > > > debug="false"> > >> > > > > > > >> > > > > > <plugin name="XmlSocketReceiver" > >> > > > > > class="org.apache.log4j.net.XMLSocketReceiver"> > >> > > > > > <param name="active" value="false"/> > >> > > > > > <param name="decoder" > >> value="org.apache.log4j.xml.XMLDecoder"/> > >> > > > > > <param name="name" value="MyXmlSocketReceiver" /> > >> > > > > > <param name="port" value="4560" /> > >> > > > > > </plugin> > >> > > > > > > >> > > > > > <root> > >> > > > > > <level value="debug"/> > >> > > > > > </root> > >> > > > > > </log4j:configuration> > >> > > > > > > >> > > > > > This is working OK, Chainsaw registers without problem the new > >> > > receiver > >> > > > > > "MyXmlSocketReceiver" and log messages sent by my C++ > >> application > >> > are > >> > > > > > correctly displayed, so clearly the problem was in the > >> > > > SimpleSocketServer > >> > > > > > that I used. > >> > > > > > > >> > > > > > One question, what I initially wanted was to write in a single > >> log > >> > > file > >> > > > > all > >> > > > > > those messages, but now that Chainsaw allows me to display and > >> > > include > >> > > > > the > >> > > > > > SocketServer that understands "XmlSocket" formatted messages I > >> was > >> > > > > thinking > >> > > > > > adding to Chain saw code the feature to write in a single log > >> file > >> > > and > >> > > > I > >> > > > > > would have all I need plus a nice display... > >> > > > > > > >> > > > > > Do you think this is feasible? > >> > > > > > Does Chainsaw bring the feature not only to display messages > but > >> to > >> > > > save > >> > > > > > them into a log file? > >> > > > > > > >> > > > > > Thanks in advance, > >> > > > > > > >> > > > > > Mh > >> > > > > > > >> > > > > > 2009/3/26 Moley Harey <[email protected]> > >> > > > > > > >> > > > > > > Hi Dmitry and old, > >> > > > > > > > >> > > > > > > Do you know if the available SimpleSocketServer already > >> include > >> > the > >> > > > > > > possibility of using it with a XMLSocketReceiver? > >> > > > > > > Or does log4j provide something similar to the code used in > >> > > Chainsaw? > >> > > > > > > > >> > > > > > > Thanks in advance, > >> > > > > > > > >> > > > > > > Mh > >> > > > > > > > >> > > > > > > 2009/3/26 Dmitry <[email protected]> > >> > > > > > > > >> > > > > > > On the server side you must use XML based receiver as well. > >> > > > > > >> Non java applications (c,c++,.net,etc..) must send logging > >> > events > >> > > in > >> > > > > XML > >> > > > > > >> serialized form and get reconstructed on the server into > Java > >> > > > objects > >> > > > > > from > >> > > > > > >> this XML. > >> > > > > > >> > >> > > > > > >> -- > >> > > > > > >> Kind regards, > >> > > > > > >> Dmitry > >> > > > > > >> > >> > > > > > >> www.moonlit-software.com > >> > > > > > >> > >> > > > > > >> Moley Harey wrote: > >> > > > > > >> > >> > > > > > >>> Hi, thanks for your answers... > >> > > > > > >>> > >> > > > > > >>> I changed the appender in my log4cxx properties file to be > a > >> > > > > > >>> XMLSocketAppender and now I get the following exception > when > >> > > trying > >> > > > > to > >> > > > > > >>> connect to my SocketServer: > >> > > > > > >>> > >> > > > > > >>> 2009-03-26 09:35:08,528 INFO NRTSocketServer - > >> NRTSocketServer > >> > > :: > >> > > > > > >>> Connected > >> > > > > > >>> to client at /127.0.0.1 > >> > > > > > >>> 2009-03-26 09:35:08,528 INFO NRTSocketServer - > >> NRTSocketServer > >> > > :: > >> > > > > > >>> Starting > >> > > > > > >>> new socket node. > >> > > > > > >>> 2009-03-26 09:35:08,534 ERROR > >> org.apache.log4j.net.SocketNode - > >> > > > Could > >> > > > > > not > >> > > > > > >>> open ObjectInputStream to Socket[addr=/127.0.0.1 > >> > > > > > >>> ,port=37049,localport=4445] > >> > > > > > >>> java.io.StreamCorruptedException: invalid stream header > >> > > > > > >>> at > >> > > > > > >>> > >> > > > > > >> > java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:764) > >> > > > > > >>> at > >> > > > > java.io.ObjectInputStream.<init>(ObjectInputStream.java:277) > >> > > > > > >>> at > >> > > > org.apache.log4j.net.SocketNode.<init>(SocketNode.java:55) > >> > > > > > >>> at NRTSocketServer.main(NRTSocketServer.java:46) > >> > > > > > >>> > >> > > > > > >>> My SocketServer is based on the log4j Java class > >> > > > SimpleSocketServer, > >> > > > > is > >> > > > > > >>> this > >> > > > > > >>> class able to receive XML messages sent by log4cxx using > >> > > > > > >>> XMLSocketAppender? > >> > > > > > >>> Or do I have to implement a different Java SocketServer > that > >> > > > > understand > >> > > > > > >>> these messages? > >> > > > > > >>> > >> > > > > > >>> 2009/3/25 Dmitry <[email protected]> > >> > > > > > >>> > >> > > > > > >>> > >> > > > > > >>> > >> > > > > > >>>> You must use XMLSocketAppender to send log from any > >> non-Java > >> > > > client > >> > > > > to > >> > > > > > >>>> Java > >> > > > > > >>>> server. > >> > > > > > >>>> Put something like this into your C++ properties file : > >> > > > > > >>>> log4j.appender.A1=org.apache.log4j.net.XMLSocketAppender > >> > > > > > >>>> log4j.appender.A1.RemoteHost=localhost > >> > > > > > >>>> log4j.appender.A1.Port=12345 > >> > > > > > >>>> It should work.. > >> > > > > > >>>> > >> > > > > > >>>> Kind regards, > >> > > > > > >>>> Dmitry > >> > > > > > >>>> http://www.moonlit-software.com > >> > > > > > >>>> > >> > > > > > >>>> > >> > > > > > >>>> Moley Harey wrote: > >> > > > > > >>>> > >> > > > > > >>>> > >> > > > > > >>>> > >> > > > > > >>>>> Hi folks, > >> > > > > > >>>>> > >> > > > > > >>>>> I have implemented a Java SimpleSocketServer application > >> that > >> > > is > >> > > > > > >>>>> running > >> > > > > > >>>>> with log4j version 1.2, I have done a test Java class > that > >> > > > > initialize > >> > > > > > >>>>> the > >> > > > > > >>>>> logging and sends a couple of messages to the > >> > > SimpleSocketServer > >> > > > > and > >> > > > > > >>>>> works > >> > > > > > >>>>> fine, all messages sent by the test class are > succesfully > >> > > written > >> > > > > in > >> > > > > > >>>>> the > >> > > > > > >>>>> same log file. > >> > > > > > >>>>> > >> > > > > > >>>>> Then I have done the same with a C++ log4cxx > application, > >> > > > updating > >> > > > > > the > >> > > > > > >>>>> log4cxx.properties file to be like this: > >> > > > > > >>>>> > >> > > > > > >>>>> log4j.rootCategory=DEBUG,stdout,A1 > >> > > > > > >>>>> > >> > > > > > >>>>> log4j.appender.stdout=org.apache.log4j.ConsoleAppender > >> > > > > > >>>>> > >> log4j.appender.stdout.layout=org.apache.log4j.PatternLayout > >> > > > > > >>>>> > >> > > > > > >>>>> log4j.appender.stdout.layout.ConversionPattern=%5p [%t] > >> > (%F:%L) > >> > > - > >> > > > > > %m%n > >> > > > > > >>>>> > >> > > > > > >>>>> # A1 is set to be a SocketAppender sending its output to > >> the > >> > > > server > >> > > > > > >>>>> running > >> > > > > > >>>>> on the remote host, port 4445 > >> > > > > > >>>>> log4j.appender.A1=org.apache.log4j.net.SocketAppender > >> > > > > > >>>>> log4j.appender.A1.Port=4445 > >> > > > > > >>>>> log4j.appender.A1.RemoteHost=127.0.0.1 > >> > > > > > >>>>> > >> > > > > > >>>>> I have run my C++ application and what I get in my log > >> file > >> > are > >> > > > > just > >> > > > > > >>>>> the > >> > > > > > >>>>> following messages: > >> > > > > > >>>>> > >> > > > > > >>>>> 2009-03-25 17:14:33,914 INFO NRTSocketServer - > >> > NRTSocketServer > >> > > > :: > >> > > > > > >>>>> Connected > >> > > > > > >>>>> to client at /127.0.0.1 > >> > > > > > >>>>> 2009-03-25 17:14:33,969 INFO NRTSocketServer - > >> > NRTSocketServer > >> > > > :: > >> > > > > > >>>>> Starting > >> > > > > > >>>>> new socket node. > >> > > > > > >>>>> > >> > > > > > >>>>> And after this no debug or info message is logged, just > >> when > >> > my > >> > > > C++ > >> > > > > > >>>>> application has finished I get the following message: > >> > > > > > >>>>> > >> > > > > > >>>>> 2009-03-25 17:16:25,290 ERROR > >> org.apache.log4j.net.SocketNode > >> > - > >> > > > > Could > >> > > > > > >>>>> not > >> > > > > > >>>>> open ObjectInputStream to Socket[addr=/127.0.0.1 > >> > > > > > >>>>> ,port=36965,localport=4445] > >> > > > > > >>>>> java.io.EOFException > >> > > > > > >>>>> at > >> > > > > > >>>>> > >> > > > > > >>>>> > >> > > > > > >>>>> > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2228) > >> > > > > > >>>>> at > >> > > > > > >>>>> > >> > > > > > >>>>> > >> > > > > > >>>>> > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2694) > >> > > > > > >>>>> at > >> > > > > > >>>>> > >> > > > > > > >> > > > java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:761) > >> > > > > > >>>>> at > >> > > > > java.io.ObjectInputStream.<init>(ObjectInputStream.java:277) > >> > > > > > >>>>> at > >> > > > org.apache.log4j.net.SocketNode.<init>(SocketNode.java:55) > >> > > > > > >>>>> at NRTSocketServer.main(NRTSocketServer.java:46) > >> > > > > > >>>>> > >> > > > > > >>>>> So from logging messages from Java application using > log4j > >> to > >> > > > Java > >> > > > > > >>>>> ServerSocket works fine, but from C++ application using > >> > log4cxx > >> > > > > 0.10 > >> > > > > > >>>>> does > >> > > > > > >>>>> not work... > >> > > > > > >>>>> > >> > > > > > >>>>> Could be the problem the type of Appender I am using? > >> Maybe I > >> > > > > should > >> > > > > > >>>>> use > >> > > > > > >>>>> something like XMLSocketAppender or so? > >> > > > > > >>>>> > >> > > > > > >>>>> Thanks in advance, > >> > > > > > >>>>> > >> > > > > > >>>>> Mh > >> > > > > > >>>>> > >> > > > > > >>>>> > >> > > > > > >>>>> > >> > > > > > >>>>> > >> > > > > > >>>>> > >> > > > > > >>>> > >> > > > > > >> --------------------------------------------------------------------- > >> > > > > > >>>> To unsubscribe, e-mail: > >> > > [email protected] > >> > > > > > >>>> For additional commands, e-mail: > >> > > > [email protected] > >> > > > > > >>>> > >> > > > > > >>>> > >> > > > > > >>>> > >> > > > > > >>>> > >> > > > > > >>> > >> > > > > > >>> > >> > > > > > >>> > >> > > > > > >>> > >> > > > > > >> > >> > > > > > >> > >> > > > > > >> > >> > > > > > >> > >> > > > > >> --------------------------------------------------------------------- > >> > > > > > >> To unsubscribe, e-mail: > >> > [email protected] > >> > > > > > >> For additional commands, e-mail: > >> > > [email protected] > >> > > > > > >> > >> > > > > > >> > >> > > > > > > > >> > > > > > > > >> > > > > > > -- > >> > > > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >> > > > > > > — Las cosas que vemos —dijo Pistorius con voz apagada— son > las > >> > > mismas > >> > > > > > cosas > >> > > > > > > que llevamos en nosotros. > >> > > > > > > No hay más realidad que la que tenemos dentro. (Herman > Hesse) > >> > > > > > > > >> > > > > > > http://moleyharey.blogspot.com/ > >> > > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > -- > >> > > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >> > > > > > — Las cosas que vemos —dijo Pistorius con voz apagada— son las > >> > mismas > >> > > > > cosas > >> > > > > > que llevamos en nosotros. > >> > > > > > No hay más realidad que la que tenemos dentro. (Herman Hesse) > >> > > > > > > >> > > > > > http://moleyharey.blogspot.com/ > >> > > > > > > >> > > > > > >> > > > > >> > > > > >> > > > > >> > > > -- > >> > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >> > > > — Las cosas que vemos —dijo Pistorius con voz apagada— son las > >> mismas > >> > > cosas > >> > > > que llevamos en nosotros. > >> > > > No hay más realidad que la que tenemos dentro. (Herman Hesse) > >> > > > > >> > > > http://moleyharey.blogspot.com/ > >> > > > > >> > > > >> > > >> > > >> > > >> > -- > >> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >> > — Las cosas que vemos —dijo Pistorius con voz apagada— son las mismas > >> cosas > >> > que llevamos en nosotros. > >> > No hay más realidad que la que tenemos dentro. (Herman Hesse) > >> > > >> > http://moleyharey.blogspot.com/ > >> > > >> > > > > > > > > -- > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > — Las cosas que vemos —dijo Pistorius con voz apagada— son las mismas > cosas > > que llevamos en nosotros. > > No hay más realidad que la que tenemos dentro. (Herman Hesse) > > > > http://moleyharey.blogspot.com/ > > > > > > -- > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > — Las cosas que vemos —dijo Pistorius con voz apagada— son las mismas cosas > que llevamos en nosotros. > No hay más realidad que la que tenemos dentro. (Herman Hesse) > > http://moleyharey.blogspot.com/ >
