{% extends '@WebProfiler/Profiler/layout.html.twig' %} {% import _self as helper %} {% block toolbar %} {% if collector.counterrors or collector.countdeprecations or collector.countscreams %} {% set icon %} {% set status_color = collector.counterrors ? 'red' : collector.countdeprecations ? 'yellow' : '' %} {% set error_count = collector.counterrors + collector.countdeprecations + collector.countscreams %} {{ include('@WebProfiler/Icon/logger.svg') }} {{ error_count }} {% endset %} {% set text %}
Errors {{ collector.counterrors|default(0) }}
Deprecated Calls {{ collector.countdeprecations|default(0) }}
Silenced Errors {{ collector.countscreams|default(0) }}
{% endset %} {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status_color }) }} {% endif %} {% endblock %} {% block menu %} {{ include('@WebProfiler/Icon/logger.svg') }} Logs {% if collector.counterrors or collector.countdeprecations %} {{ collector.counterrors ?: collector.countdeprecations }} {% endif %} {% endblock %} {% block panel %}

Log Messages

{% if collector.logs is empty %}

No log messages available.

{% else %} {# sort collected logs in groups #} {% set deprecation_logs, debug_logs, info_and_error_logs, silenced_logs = [], [], [], [] %} {% for log in collector.logs %} {% if log.context.level is defined and log.context.type is defined and log.context.type in [constant('E_DEPRECATED'), constant('E_USER_DEPRECATED')] %} {% set deprecation_logs = deprecation_logs|merge([log]) %} {% elseif log.context.scream is defined and log.context.scream == true %} {% set silenced_logs = silenced_logs|merge([log]) %} {% elseif log.priorityName == 'DEBUG' %} {% set debug_logs = debug_logs|merge([log]) %} {% else %} {% set info_and_error_logs = info_and_error_logs|merge([log]) %} {% endif %} {% endfor %}

Info. & Errors {{ info_and_error_logs|length }}

{% if info_and_error_logs is empty %}

There are no log messages of this level.

{% else %} {{ helper.render_table(info_and_error_logs, true) }} {% endif %}
{# 'deprecation_logs|length' is not used because deprecations are now grouped and the group count doesn't match the message count #}

Deprecations {{ collector.countdeprecations|default(0) }}

{% if deprecation_logs is empty %}

There are no log messages about deprecated features.

{% else %} {{ helper.render_table(deprecation_logs, false, true) }} {% endif %}

Debug {{ debug_logs|length }}

{% if debug_logs is empty %}

There are no log messages of this level.

{% else %} {{ helper.render_table(debug_logs) }} {% endif %}

Silenced Errors {{ collector.countscreams|default(0) }}

{% if silenced_logs is empty %}

There are no log messages of this level.

{% else %} {{ helper.render_table(silenced_logs) }} {% endif %}
{% endif %} {% endblock %} {% macro render_table(logs, show_level = false, is_deprecation = false) %} {% import _self as helper %} {% set channel_is_defined = (logs|first).channel is defined %} {% if channel_is_defined %}{% endif %} {% for log in logs %} {% set css_class = is_deprecation ? '' : log.priorityName in ['CRITICAL', 'ERROR', 'ALERT', 'EMERGENCY'] ? 'status-error' : log.priorityName in ['NOTICE', 'WARNING'] ? 'status-warning' %} {% if channel_is_defined %} {% endif %} {% endfor %}
{{ show_level ? 'Level' : 'Time' }}ChannelMessage
{% if show_level %} {{ log.priorityName }} {% endif %} {{ log.timestamp|date('H:i:s') }} {{ log.channel }}{{ helper.render_log_message(loop.index, log, is_deprecation) }}
{% endmacro %} {% macro render_log_message(log_index, log, is_deprecation = false) %} {{ log.message }} {% if is_deprecation %} {% set stack = log.context.stack|default([]) %} {% set id = 'sf-call-stack-' ~ log_index %} {% if log.context.errorCount is defined %} ({{ log.context.errorCount }} times) {% endif %} {% if stack %} {% endif %} {% for index, call in stack if index > 1 %} {% if index == 2 %} {% endif %} {% endfor %} {% else %} {% if log.context is defined and log.context is not empty %} Context: {{ log.context|json_encode(64 b-or 256)|replace({ '{"' : '{ "', '"}' : '" }', '":{' : '": {', '":"' : '": "', '","' : '", "' }) }} {% endif %} {% endif %} {% endmacro %}