如何防止Chromium写入控制台?

问题描述 投票:0回答:1

我正在做一个非常简单的Delphi 慰问 申请({$APPTYPE CONSOLE})与单 TChromiumWindow 在主窗体上。该应用程序的目的是检索一个网页,处理HTML并向控制台输出一些JSON。由于网页的性质,这不能用普通的HTTP请求来完成,这也需要运行一些javascript。

除了一个问题之外,一切都能按预期工作。Chromium组件也向控制台输出了一些错误信息,这使得我的JSON无效!例如,我总是得到以下信息。例如,我总是在启动时得到以下两个错误信息。

[0529/133941.811:ERROR:gpu_process_transport_factory.cc(990)] Lost UI shared context.
[0529/133941.832:ERROR:url_request_context_getter_impl.cc(130)] Cannot use V8 Proxy resolver in single process mode.

当然,最好的解决方案是一开始就不要收到任何错误信息,但由于一些原因(主要是公司的遗留代码),我无法禁用单进程模式。

所以下一个最好的办法就是不让这些错误信息被打印到控制台。我试过设置

GlobalCEFApp.LogSeverity := LOGSEVERITY_DISABLE;

但这并没有帮助。使用以下方法指定一个日志文件 GlobalCEFApp.LogFile 也无济于事。

那么如何才能防止Chromium组件完全不向控制台写入呢?

delphi chromium-embedded cef4delphi
1个回答
1
投票

TChromium 组件提供了一个 OnConsoleMessage 签名的事件。

 TOnConsoleMessage = procedure(Sender: TObject; const browser: ICefBrowser; 
                               const message, source: ustring; line: Integer; 
                               out Result: Boolean) of object;  

如果你处理这个事件,并设置了 Result 变量到 true 抑制向控制台输出信息。

© www.soinside.com 2019 - 2024. All rights reserved.