1

我正在编写一个读取数据库并处理记录的 Apex 程序。每次处理记录时,我都想输出一条消息。目前我正在使用 System.Debug 来执行此操作,但是调试日志杂乱无章,以至于这似乎不是正确的方法。

我可以通过哪些其他方式在 SalesForce 中生成屏幕或日志文件输出?

4

3 回答 3

1

继续使用System.Debug(),但当您只想查看输出消息时,只需过滤DEBUG. 否则,唯一的其他选择是创建一个视图,然后这比它的价值更混乱。

于 2012-09-25T06:48:39.653 回答
0

请在设置>>管理设置>>监控>>调试日志下打开原始格式的日志。在受监控的用户下,转到过滤器并启用所有过滤器级别。现在使用给定的顶点代码

System.debug('StackOverflow >>1234'+ e.getMessage)

并搜索StackOverflow >>1234唯一消息的详细调试日志。也可能发生您的 system.debug 可能没有在特定的调试日志中执行,所以不要忘记检查所有最近的调试日志。:)

于 2012-09-25T10:59:16.807 回答
0

您可以考虑创建自己的 Logging__c 对象。并为处理的每条记录创建一条记录。不过,您必须有创造力才能绕过州长的限制。

如果在处理每条记录之间输出消息不是必需的,那么您可以在处理继续时建立 Logging__c 记录的集合,然后定期插入它们,或者在您的过程中出现异常时插入它们。

请注意,如果定期插入它们,您仍然必须确保作业不会太大,以至于您将与您正在进行的处理工作一起达到 150 的 DML 限制。此外,如果存储要在处理结束时全部插入的记录,请记住堆大小为 6MB。

或者,看看 Batch Apex http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_batch_interface.htm

这允许您创建一个类来处理异步块中的作业。您可以设置一次性处理的记录数。因此,您可以设置这个小 (~20),然后在处理每个作业记录时插入一个 Logging_c 记录,以保持在 Batch Apex DML 限制 200 内。然后您可以实时监控 Logging_c 记录以查看进度。

于 2012-10-24T10:43:02.723 回答