Salesforce 使用apex可批处理代码时,无法在日志中查看system.debug输出

Salesforce 使用apex可批处理代码时,无法在日志中查看system.debug输出,salesforce,apex-code,apex,Salesforce,Apex Code,Apex,我在匿名执行中执行以下操作: Database.executeBatch(new TransferACDCAccountOppOwnerBatch(), 200); 班级在下面。它使用可批处理的接口。我放入了一堆调试语句,但在控制台的日志中没有看到任何内容。我还为Apex等创建了调试级别的调试日志,并且没有看到任何system.debug输出。我知道SOQL本身可以工作,并且应该只返回我设置的开发人员沙盒测试数据中的一行 批处理接口是否有不允许system.debug输出的地方?我知道这是异步

我在匿名执行中执行以下操作:

Database.executeBatch(new TransferACDCAccountOppOwnerBatch(), 200);
班级在下面。它使用可批处理的接口。我放入了一堆调试语句,但在控制台的日志中没有看到任何内容。我还为Apex等创建了调试级别的调试日志,并且没有看到任何system.debug输出。我知道SOQL本身可以工作,并且应该只返回我设置的开发人员沙盒测试数据中的一行

批处理接口是否有不允许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');
    }
}

如果调试日志超过该大小,则将其限制为2MB salesforce会删除调试行以试图将其大小减少到限制以下

如果您有一个特别嘈杂的类,您可以覆盖该类的日志记录


查看此处的文档:

我有时使用的一种快速简便的方法是将debog级别设置为错误,然后每次您想要调试时,只需执行以下操作即可 System.DebuggLoggingLevel.ERROR,“调试消息显示在此处”;
完成后不要忘记清除调试行,以免使问题进一步恶化。

结果表明,在Execute方法中,我传递的是List而不是List,而查询是Opportunity

另外,设置LoggingLevel.INFO似乎至少有助于在匿名执行中运行此批处理类时将调试消息发送到开发人员控制台


谢谢你的提示

谢谢大家的回复。我试过不同的方法。然而,剩下的问题是。。。在日志中,我可以在日志中看到批处理查询开始时的调试语句。我还可以看到批处理作业完成bdclog finish批处理时的调试日志输出。但是,我没有看到可批处理代码执行的调试日志输出,即使我可以在日志中看到查询正确地从getQueryLocatorquery调用返回了10行。我不明白为什么日志中没有显示bdclog执行批处理传输。我将在下一个commentglobal类TransferACDCAccountOpownerBatch实现数据库中粘贴代码。Batchable{String查询;静态字符串类型='Accounter';global TransferACDCAccountOpownerBatch{query='SELECT Id,Num_Active_Orgs_uC FROM Opportunity Where type=:type'+'LIMIT 10';}global Database.QueryLocator startDatabase.BatchableContext BC{System.debugLoggingLevel.INFO,“bdclog start query”;return Database.getQueryLocator;}以下是注释后的剩余代码字符数上限:global void ExecutedDatabase.BatchableContext BC,列表范围{System.debugLoggingLevel.INFO,'bdclog执行批处理传输';}全局void finishDatabase.BatchableContext BC{System.debugLoggingLevel.INFO,'bdclog finish batch';}