I have difficulties in logging incoming message from client. I create
Iso server exactly as in the example, then i add logger for server's
channel. If incoming message is correct (using the same format and
same channel) then it can be logged. But if the message is incorrect,
only exceptions come out, and the message received from the client is
not printed out.
Thank you very much for your help.
this is my code:
------------------------
Logger logger = new Logger();
logger.addListener (new SimpleLogListener (System.out));
GenericPackager packager = new GenericPackager("src/iso8583.xml");
ISOChannel clientSideChannel = new ASCIIChannel(packager);
ThreadPool pool = new ThreadPool (5, 30);
packager.setLogger(logger, "packager");
((LogSource)(ServerChannel) clientSideChannel).setLogger (logger,
"channel");
// i also try this one
((LogSource) clientSideChannel).setLogger (logger, "channel");
pool.setLogger(logger, "iso-server-pool");
server =
new ISOServer (
8000, (ServerChannel) clientSideChannel, pool);
server.setLogger (logger, "iso-server");
server.addISORequestListener (new Iso8583Server());
new Thread (server).start();
--------------
And this is the log:
<log realm="iso-server" at="Mon Mar 12 23:16:05 PST 2007.953">
<iso-server>
listening on port 8000
</iso-server>
</log>
<log realm="iso-server.session/127.0.0.1" at="Mon Mar 12 23:16:12 PST
2007.796">
<session-start/>
</log>
<log realm="iso-server.channel/127.0.0.1:2251" at="Mon Mar 12 23:16:12
PST 2007.890">
<receive>
<iso-exception>
receive length 12336 seems strange
org.jpos.iso.ISOException: receive length 12336 seems strange
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:525)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:123)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:100)
</iso-exception>
</receive>
</log>
<log realm="iso-server.session/127.0.0.1" at="Mon Mar 12 23:16:12 PST
2007.890">
<session-error>
<iso-exception>
receive length 12336 seems strange
org.jpos.iso.ISOException: receive length 12336 seems strange
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:525)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:123)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:100)
</iso-exception>
</session-error>
</log>
<log realm="iso-server.channel/127.0.0.1:2251" at="Mon Mar 12 23:16:12
PST 2007.890">
<disconnect>
null:0
</disconnect>
</log>
<log realm="iso-server.session/127.0.0.1" at="Mon Mar 12 23:16:12 PST
2007.890">
<session-end/>
</log>
I think the channel logging to file is easy if you use the QServer
approach.
because, it happens automatically.
zab
Thank You in advance
The exceptions indicate a difference between the clients 'channel' and
the one you are using. Check the length byte format and length with the
client you are not getting good messages from.
> But if the message is incorrect,
> only exceptions come out, and the message received from the client is
> not printed out.
If all the channel can see is badly formed messages, it can't log the
content because it is a badly formed message.
--
Mark