我在匿名执行中执行以下操作:
Database.executeBatch(new TransferACDCAccountOppOwnerBatch(), 200);
课程如下。它使用Batchable接口。我输入了一堆调试语句,但在控制台的日志中看不到任何内容。我还在调试级别为Apex等创建调试日志,也没有看到任何system.debug输出。我知道SOQL本身可以工作,并且应该只在我设置的开发人员沙箱测试数据中返回一行。
有什么关于batchable接口的东西不允许system.debug输出吗?我知道它是异步的,但是工作完成了,我看到了大量的日志信息。我只是没有看到任何system.debug输出。
global class TransferACDCAccountOppOwnerBatch implements Database.Batchable<sObject> {
String query;
static String type = 'Accountant';
static String stageName = 'Closed Won';
static String numberEmployees = '<5';
global TransferACDCAccountOppOwnerBatch() {
query = 'SELECT Id, Num_Active_Orgs__c, Num_Active_Paying_Orgs__c,Number_of_Bookkeeping_Clients__c, Number_Bookkeeping_Clients_SR__c,' +
'Num_Targeted_Orgs__c, AccountId, Account_State__c, Biz_Dev_Owner__c,CloseDate, IsClosed, Name, Type, OPS_ID__c, Org_Creator__c,' +
'Org_s_Geographical_State__c, OwnerId, StageName, Tier__c, IsWon,First_targeted_Org__r.NumberEmployees__c, Account.name, Account.owner.name' +
' FROM Opportunity' +
' WHERE StageName = :stageName' +
' And type = :type' +
' And CloseDate < Last_90_Days' +
' And First_targeted_Org__r.NumberEmployees__c = :numberEmployees';
}
global Database.QueryLocator start(Database.BatchableContext BC) {
System.debug('start query');
return Database.getQueryLocator(query);
}
global void execute(Database.BatchableContext BC, List<Account> scope) {
System.debug('execute batch transfer');
TransferACDCAccountOppOwnerHandler hierarchy_handler = new TransferACDCAccountOppOwnerHandler();
hierarchy_handler.setup(scope, BC.getJobId());
System.debug('after hierarchy handler setup');
// hierarchy_handler.runMatching();
// hierarchy_handler.processConsoles();
// hierarchy_handler.processGlobalConsoles();
// hierarchy_handler.commitUpdates();
}
global void finish(Database.BatchableContext BC) {
System.debug('finish bath');
}
}
答案 0 :(得分:0)
调试日志限制为2MB(如果超过该大小)salesforce无助删除调试行以尝试将大小减小到限制以下。
如果您有一个特别嘈杂的课程,您可以覆盖该课程的日志记录。
答案 1 :(得分:0)
我有时会使用快速简单的黑客将你的debog级别设置为ERROR
,然后每次你想要调试你就行了
System.debug(LoggingLevel.ERROR, 'Debug message goes here');
只要不要忘记在完成后清除调试行,以免使问题更加严重。
答案 2 :(得分:0)
事实证明,在Execute方法中,当查询针对Opportunity时,我传递的是List而不是List。
此外,似乎设置LoggingLevel.INFO至少有助于在匿名执行中运行此batchable类时获取发送到开发人员控制台的调试消息。
感谢您的提示!
答案 3 :(得分:0)
批处理顶点支持 System.dubug。 由于批处理 apex 异步运行,因此它会根据您的批处理大小创建多个日志。因此,请查看批处理 apex 完成执行时创建的每个日志文件。