You may need to add some tLogRow components in your Talend job to monitor during test the ETL progress, but then you need to turn them off when you run the job in production.

Probably you have already at least two contexts: the one you use in the test environment and the one to be used in production.

Well, there is a simple technique to disable ALL the tLogRow components (or enable all them) with a context variable.

That is done setting a global variable using the tSetGlobalVar. tLogRow uses a PrintStream saved in the global variables map, and, if not already set, it instantiate a PrintStream only once.

So, if before the “real” job starts we add a tSetGlobalVar component which sets the tLogRow stream to a null stream, we’re done, no more logs are printed.

How to do it

First we need a context variable to control the logging. Let call it “log” and be a boolean value.

With in the tSetGlobalVar component we add the key "tLogRow_CONSOLE" which is the global map key under which tLogRow search for a stream.

We set the value for that key in this way:

context.log?null:new java.io.PrintStream("/dev/null")

(you should change “/dev/null” to “NUL” on Windows)

That creates a “null” stream and the logs printed by tLogRow are thrown away.

Of course you can even import the Apache Commons IO and use one of their predefined null streams, it’s up to you.

My excuses for my bad english but it's the only way I have to communicate with you. Would you suggest a correction? Leave a comment, thank you!
Categories: Talend

0 Comments

Leave a Reply