Hello,
During the implementation of a custom method in Documentum (via Composer), we have the possibility to generate a specific log (dm_document stored in DCTM) for each method’s execution via a PrintWriter object provided by Documentum DFC:

public class MyJavaBlogMethod extends DfSingleDocbaseModule implements IDfMethod {
	// --------------------------------------------------------------- PRIVATE VARIABLES
	// Writer to JOB SAVE_RESULTS file
	private MethodHelper methodHelper = null;
	
	// --------------------------------------------------------------- PUBLIC METHODS
	public int execute(Map args, PrintWriter writer) throws Exception {
		this.pw = writer;
		//...
		//...
		pw.println(ownerClass +" - OUT - " + s + (t==null?"":" - Throwable="+t.getMessage()));
		//...
		//...
	}
}

 
During the execution or calling of method, it is necessary to precise the save_results=true parameter :

EXECUTE do_method WITH method = 'HUO_MyJavaBlogMethod', save_results=true, arguments ='-user_name huouser -docbase_name MY_DOCBASE_DEV -password my_pwd_4_huo -myparameter1 "VALUE1, VALUE2" -myparameter2 "090xxxx47, 090yyyyybbd " '

 
The execution of a method returns result (or/and result_doc_id) field, this information corresponds to the r_object_id of dm_document of log file. Without the save_results=true parameter, the result field is equal to 0.
 
Via Documentum API function getfile on the result (or/and result_doc_id) returned by the method’s execution, get the log file:

API> getfile,c,090xxxxc5
...
C:\APP\dqMan\dmcl\DOC_BASE_ID\Result0f5c6823.txt 

 
This TXT file contains the log of method’s execution:

class com.huo.lu.emc.method.MyJavaBlogMethod - OUT -  - LOG - MyJavaBlogMethod.execute(), pw=java.io.PrintWriter@6e1b3efc
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT - nkeys: 5
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT - parsing key: user_name
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT - param user_name=huouser 
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT - parsing key: docbase_name
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT - param docbase_name=MY_DOCBASE_DEV
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT -  - LOG -  ***************************** Start of execution report for MyJavaBlogMethod method/job
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT -  - LOG -  ******* Number of total documents to process : 2
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT -  - LOG -  ******* Number of total documents processed without error: 2
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT -  - LOG -  ******* Number of documents not processed due to functionnal error : 0
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT -  - LOG -  ******* Following all functionnal warning messages concerning the documents: 
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT -  - LOG -  ***************************** End of execution report for MyJavaBlogMethod method/job
class com.huo.lu.emc.method.MyJavaBlogMethod - OUT -  - LOG - MyJavaBlogMethod.Execute() returning : 2

 
More, the logs of job’s execution via DA or djMan are stored in the dedicated folder in the cabinet /Temp/Jobs/Huo_MyJavaBlogJob:

SELECT * FROM dm_document where folder('/Temp/Jobs/Huo_MyJavaBlogJob') ORDER BY r_creation_date DESC;

 
And the logs of method’s execution via DA or DQL are stored in the root of /Temp/ cabinet:

SELECT * FROM dm_document WHERE folder('/Temp') and object_name LIKE '%MyJavaBlogJob%' ORDER BY r_creation_date DESC;

 
 
Study Case:
After exécutions, the logs are missing from the classic directory on the server filesystem [DCTM_INSTALL_FOLDER]\dba\log\[DOCBASE_ID]\sysadmin, however, there are logs in the dedicated folder in the cabinet /Temp/Jobs/Huo_MyJavaBlogJob and /Temp/ cabinet:

DQL>SELECT  * FROM dm_document WHERE folder('/Temp') and object_name LIKE '%MyPerso%' ORDER BY r_creation_date DESC;
...
09xxxxxxxxxxxc10	Result.JavaLu_MyPersoMethod	Result of dm_method(JavaLu_MyPersoMethod) with status code (0)	Result of dm_method(JavaLu_MyPersoMethod) with command line: -method_verb JavaLu_MyPersoModule -__dm_docbase__ MY_DOCBASE_DEV -__dm_server_config__ MY_DOCBASE_DEV  -user_name myuser ....		myuser
...
09xxxxxxxxxxxbe6	Result.JavaLu_MyPersoMethod	Result of dm_method(JavaLu_MyPersoMethod) with status code (0)	Result of dm_method(JavaLu_MyPersoMethod) with command line: -method_verb JavaLu_MyPersoModule -__dm_docbase__ MY_DOCBASE_DEV -__dm_server_config__ MY_DOCBASE_DEV -nbdocsproccess 100....		myuser



DQL>SELECT * FROM dm_document where folder('/Temp/Jobs/JavaLu_MyPersoJob') ORDER BY r_creation_date DESC;
....
09xxxxxxxxxxxc0b	01/28/2016 12:25:43 PM JavaLu_MyPersoJob	Result of dm_method(JavaLu_MyPersoMethod) with status code (0)	Result of dm_method(JavaLu_MyPersoMethod) with command line: -method_verb JavaLu_MyPersoModule -__dm_docbase__ MY_DOCBASE_DEV -__dm_server_config__ MY_DOCBASE_DEV  -user_name myuser ....		myuser
...
09xxxxxxxxxxxb8e	01/28/2016 11:48:12 AM JavaLu_MyPersoJob	Result of dm_method(JavaLu_MyPersoMethod) with status code (0)	Result of dm_method(JavaLu_MyPersoMethod) with command line: -method_verb JavaLu_MyPersoModule -__dm_docbase__ MY_DOCBASE_DEV -__dm_server_config__ MY_DOCBASE_DEV  -user_name myuser ....		myuser

 
Where are store these log files?
In DA, the dm_filestore ‘filestore_01’ use the dm_location ‘storage_01’ whose the path is \\MYFILESSERVER1\data\MY_DOCBASE_DEV\content_storage_01. So, to retrieve the storage location given the r_object_id of a dm_sysobject use the getpath API method. For example in IAPI:

API> getpath,c,09xxxxxxxxxxxc0b
...
\\MYFILESSERVER1\data\MY_DOCBASE_DEV\content_storage_01\000xxxxx\12\34\aa\bb.txt</code>

That’s all!!!

Huseyin OZVEREN