diff --git a/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/logs.html.twig b/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/logs.html.twig index dc6da371d3..a3cce5bf51 100644 --- a/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/logs.html.twig +++ b/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/logs.html.twig @@ -1,9 +1,9 @@ {% set channel_is_defined = (logs|first).channel is defined %} - +
- - {% if channel_is_defined %}{% endif %} + + {% if channel_is_defined %}{% endif %} @@ -18,7 +18,7 @@ {% set severity = log.context.exception.severity|default(false) %} {% set status = severity is constant('E_DEPRECATED') or severity is constant('E_USER_DEPRECATED') ? 'warning' : 'normal' %} {% endif %} - +
LevelChannelLevelChannelMessage
{{ log.priorityName }} {{ log.timestamp|date('H:i:s') }} diff --git a/src/Symfony/Bundle/TwigBundle/Resources/views/base_js.html.twig b/src/Symfony/Bundle/TwigBundle/Resources/views/base_js.html.twig index 07feb3856a..17579d3fe2 100644 --- a/src/Symfony/Bundle/TwigBundle/Resources/views/base_js.html.twig +++ b/src/Symfony/Bundle/TwigBundle/Resources/views/base_js.html.twig @@ -173,50 +173,102 @@ } }, - createLogLevels: function() { - document.querySelectorAll('.logs[data-log-levels]').forEach(function (el) { - var bullets = document.createElement('ul'), - levels = el.getAttribute('data-log-levels').toLowerCase().split(','), - defaultLevel = el.hasAttribute('data-default-log-level') ? levels.indexOf(el.getAttribute('data-default-log-level').toLowerCase()) : levels.length - 1; - addClass(bullets, 'log-levels'); - el.getAttribute('data-log-levels').split(',').forEach(function (level, i) { - var bullet = document.createElement('li'); - bullet.innerText = level; - bullet.setAttribute('data-log-level', String(i)); - bullets.appendChild(bullet); - addEventListener(bullet, 'click', function() { - if (i === this.parentNode.querySelectorAll('.active').length - 1) { - return; - } - this.parentNode.querySelectorAll('li').forEach(function (bullet, j) { - if (parseInt(bullet.getAttribute('data-log-level')) <= levels.indexOf(level.toLowerCase())) { - addClass(bullet, 'active'); - if (i === j) { - addClass(bullet, 'last-active'); - } else { - removeClass(bullet, 'last-active'); - } - } else { - removeClass(bullet, 'active'); - removeClass(bullet, 'last-active'); - } - }); - el.querySelectorAll('tr[data-log-level]').forEach(function (row) { - row.style.display = i < levels.indexOf(row.getAttribute('data-log-level')) ? 'none' : ''; - }); - }); - if (i <= defaultLevel) { - addClass(bullet, 'active'); - if (i === defaultLevel) { - addClass(bullet, 'last-active'); - } + createFilters: function() { + document.querySelectorAll('[data-filters] [data-filter]').forEach(function (filter) { + var filters = filter.closest('[data-filters]'), + type = 'choice', + name = filter.dataset.filter, + ucName = name.charAt(0).toUpperCase()+name.slice(1), + list = document.createElement('ul'), + values = filters.dataset['filter'+ucName] || filters.querySelectorAll('[data-filter-'+name+']'), + labels = {}, + defaults = null, + indexed = {}, + processed = {}; + if (typeof values === 'string') { + type = 'level'; + labels = values.split(','); + values = values.toLowerCase().split(','); + defaults = values.length - 1; + } + addClass(list, 'filter-list'); + addClass(list, 'filter-list-'+type); + values.forEach(function (value, i) { + if (value instanceof HTMLElement) { + value = value.dataset['filter'+ucName]; + } + if (value in processed) { + return; + } + var option = document.createElement('li'), + label = i in labels ? labels[i] : value, + active = false, + matches; + if ('' === label) { + option.innerHTML = '(none)'; } else { - el.querySelectorAll('tr[data-log-level="'+level.toLowerCase()+'"]').forEach(function (row) { - row.style.display = 'none'; + option.innerText = label; + } + option.dataset.filter = value; + option.setAttribute('title', 1 === (matches = filters.querySelectorAll('[data-filter-'+name+'="'+value+'"]').length) ? 'Matches 1 row' : 'Matches '+matches+' rows'); + indexed[value] = i; + list.appendChild(option); + addEventListener(option, 'click', function () { + if ('choice' === type) { + filters.querySelectorAll('[data-filter-'+name+']').forEach(function (row) { + if (option.dataset.filter === row.dataset['filter'+ucName]) { + toggleClass(row, 'filter-hidden-'+name); + } + }); + toggleClass(option, 'active'); + } else if ('level' === type) { + if (i === this.parentNode.querySelectorAll('.active').length - 1) { + return; + } + this.parentNode.querySelectorAll('li').forEach(function (currentOption, j) { + if (j <= i) { + addClass(currentOption, 'active'); + if (i === j) { + addClass(currentOption, 'last-active'); + } else { + removeClass(currentOption, 'last-active'); + } + } else { + removeClass(currentOption, 'active'); + removeClass(currentOption, 'last-active'); + } + }); + filters.querySelectorAll('[data-filter-'+name+']').forEach(function (row) { + if (i < indexed[row.dataset['filter'+ucName]]) { + addClass(row, 'filter-hidden-'+name); + } else { + removeClass(row, 'filter-hidden-'+name); + } + }); + } + }); + if ('choice' === type) { + active = null === defaults || 0 <= defaults.indexOf(value); + } else if ('level' === type) { + active = i <= defaults; + if (active && i === defaults) { + addClass(option, 'last-active'); + } + } + if (active) { + addClass(option, 'active'); + } else { + filters.querySelectorAll('[data-filter-'+name+'="'+value+'"]').forEach(function (row) { + toggleClass(row, 'filter-hidden-'+name); }); } + processed[value] = true; }); - el.parentNode.insertBefore(bullets, el); + + if (1 < list.childNodes.length) { + filter.appendChild(list); + filter.dataset.filtered = ''; + } }); } }; @@ -225,7 +277,7 @@ Sfjs.addEventListener(document, 'DOMContentLoaded', function() { Sfjs.createTabs(); Sfjs.createToggles(); - Sfjs.createLogLevels(); + Sfjs.createFilters(); }); /*]]>*/ diff --git a/src/Symfony/Bundle/TwigBundle/Resources/views/exception.css.twig b/src/Symfony/Bundle/TwigBundle/Resources/views/exception.css.twig index 824a1192c6..4556749de8 100644 --- a/src/Symfony/Bundle/TwigBundle/Resources/views/exception.css.twig +++ b/src/Symfony/Bundle/TwigBundle/Resources/views/exception.css.twig @@ -1,3 +1,39 @@ +{# This file is based on WebProfilerBundle/Resources/views/Profiler/profiler.css.twig. + If you make any change in this file, verify the same change is needed in the other file. #} +:root { + --font-sans-serif: 'Helvetica, Arial, sans-serif'; + --page-background: #f9f9f9; + --color-text: #222; + /* when updating any of these colors, do the same in toolbar.css.twig */ + --color-success: #4f805d; + --color-warning: #a46a1f; + --color-error: #b0413e; + --color-muted: #999; + --tab-background: #fff; + --tab-color: #444; + --tab-active-background: #666; + --tab-active-color: #fafafa; + --tab-disabled-background: #f5f5f5; + --tab-disabled-color: #999; + --metric-value-background: #fff; + --metric-value-color: inherit; + --metric-unit-color: #999; + --metric-label-background: #e0e0e0; + --metric-label-color: inherit; + --table-border: #e0e0e0; + --table-background: #fff; + --table-header: #e0e0e0; + --shadow: 0px 0px 1px rgba(128, 128, 128, .2); + --border: 1px solid #e0e0e0; + --base-0: #fff; + --base-1: #f5f5f5; + --base-2: #e0e0e0; + --base-3: #ccc; + --base-4: #666; + --base-5: #444; + --base-6: #222; +} + html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0} html { @@ -20,6 +56,7 @@ table th { background-color: #E0E0E0; font-weight: bold; text-align: left; } .m-t-5 { margin-top: 5px; } .hidden-xs-down { display: none; } .block { display: block; } +.full-width { width: 100%; } .hidden { display: none; } .prewrap { white-space: pre-wrap; } .nowrap { white-space: nowrap; } @@ -58,6 +95,40 @@ thead.sf-toggle-content.sf-toggle-visible, tbody.sf-toggle-content.sf-toggle-vis .tab-navigation li .badge.status-error { background: #B0413E; color: #FFF; } .tab-content > *:first-child { margin-top: 0; } +[data-filters] { position: relative; } +[data-filtered] { cursor: pointer; } +[data-filtered]:after { content: '\00a0\25BE'; } +[data-filtered]:hover .filter-list li { display: inline-flex; } +[class*="filter-hidden-"] { display: none; } +.filter-list { position: absolute; border: var(--border); box-shadow: var(--shadow); margin: 0; padding: 0; display: flex; flex-direction: column; } +.filter-list :after { content: ''; } +.filter-list li { + background: var(--tab-disabled-background); + border-bottom: var(--border); + color: var(--tab-disabled-color); + display: none; + list-style: none; + margin: 0; + padding: 5px 10px; + text-align: left; + font-weight: normal; +} +.filter-list li.active { + background: var(--tab-background); + color: var(--tab-color); +} +.filter-list li.last-active { + background: var(--tab-active-background); + color: var(--tab-active-color); +} + +.filter-list-level li { cursor: s-resize; } +.filter-list-level li.active { cursor: n-resize; } +.filter-list-level li.last-active { cursor: default; } +.filter-list-level li.last-active:before { content: '\2714\00a0'; } +.filter-list-choice li:before { content: '\2714\00a0'; color: var(--tab-background); } +.filter-list-choice li.active:before { color: unset; } + .container { max-width: 1024px; margin: 0 auto; padding: 0 15px; } .container::after { content: ""; display: table; clear: both; } @@ -125,14 +196,6 @@ header .container { display: flex; justify-content: space-between; } .trace-as-text .stacktrace { line-height: 1.8; margin: 0 0 15px; white-space: pre-wrap; } -table.logs tr td:last-child { width: 100%; } - -.log-levels { width: 100%; margin: 0; padding: 0; display: flex; align-items: center; list-style: none; } -.log-levels li { width: 100%; padding: 3px; margin: 0; cursor: pointer; text-align: center; border: 2px dashed #e0e0e0; border-radius: 5px; color: #888; } -.log-levels li + li { margin-left: 10px; } -.log-levels li.active { background: #eee; color: #666; border-style: solid; border-width: 1px; padding: 4px; border-color: #aaa; } -.log-levels li.last-active { cursor: not-allowed; } - @media (min-width: 575px) { .hidden-xs-down { display: initial; } .help-link { margin-left: 30px; } diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/logger.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/logger.html.twig index 0765405b5b..f3d0f7cad4 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/logger.html.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/logger.html.twig @@ -180,18 +180,21 @@ + + {% endif %} {% endblock %} {% macro render_table(logs, category = '', show_level = false, is_deprecation = false) %} {% import _self as helper %} {% set channel_is_defined = (logs|first).channel is defined %} + {% set filter = show_level or channel_is_defined %} - +
- - {% if channel_is_defined %}{% endif %} + {% if show_level %}{% else %}{% endif %} + {% if channel_is_defined %}{% endif %} @@ -202,7 +205,7 @@ : log.priorityName in ['CRITICAL', 'ERROR', 'ALERT', 'EMERGENCY'] ? 'status-error' : log.priorityName == 'WARNING' ? 'status-warning' %} - +
{{ show_level ? 'Level' : 'Time' }}ChannelLevelTimeChannelMessage
{% if show_level %} {{ log.priorityName }} @@ -212,7 +215,7 @@ {% if channel_is_defined %} - {{ log.channel }} + {% if log.channel is null %}n/a{% else %}{{ log.channel }}{% endif %} {% if log.errorCount is defined and log.errorCount > 1 %} ({{ log.errorCount }} times) {% endif %} @@ -225,10 +228,6 @@ {% endfor %}
- - {% if show_level %} - - {% endif %} {% endmacro %} {% macro render_log_message(category, log_index, log) %} diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base_js.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base_js.html.twig index ea6177e2e8..e18919c31f 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base_js.html.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base_js.html.twig @@ -684,51 +684,102 @@ } }, - createLogLevels: function() { - document.querySelectorAll('.logs[data-log-levels]').forEach(function (el) { - var bullets = document.createElement('ul'), - levels = el.getAttribute('data-log-levels').toLowerCase().split(','), - defaultLevel = el.hasAttribute('data-default-log-level') ? levels.indexOf(el.getAttribute('data-default-log-level').toLowerCase()) : levels.length - 1; - addClass(bullets, 'log-levels'); - el.getAttribute('data-log-levels').split(',').forEach(function (level, i) { - var bullet = document.createElement('li'); - bullet.innerText = level; - bullet.setAttribute('data-log-level', String(i)); - bullet.setAttribute('title', 'Show logs of level ' + level + ' or higher'); - bullets.appendChild(bullet); - addEventListener(bullet, 'click', function() { - if (i === this.parentNode.querySelectorAll('.active').length - 1) { - return; - } - this.parentNode.querySelectorAll('li').forEach(function (bullet, j) { - if (parseInt(bullet.getAttribute('data-log-level')) <= levels.indexOf(level.toLowerCase())) { - addClass(bullet, 'active'); - if (i === j) { - addClass(bullet, 'last-active'); - } else { - removeClass(bullet, 'last-active'); - } - } else { - removeClass(bullet, 'active'); - removeClass(bullet, 'last-active'); - } - }); - el.querySelectorAll('tr[data-log-level]').forEach(function (row) { - row.style.display = i < levels.indexOf(row.getAttribute('data-log-level')) ? 'none' : ''; - }); - }); - if (i <= defaultLevel) { - addClass(bullet, 'active'); - if (i === defaultLevel) { - addClass(bullet, 'last-active'); - } + createFilters: function() { + document.querySelectorAll('[data-filters] [data-filter]').forEach(function (filter) { + var filters = filter.closest('[data-filters]'), + type = 'choice', + name = filter.dataset.filter, + ucName = name.charAt(0).toUpperCase()+name.slice(1), + list = document.createElement('ul'), + values = filters.dataset['filter'+ucName] || filters.querySelectorAll('[data-filter-'+name+']'), + labels = {}, + defaults = null, + indexed = {}, + processed = {}; + if (typeof values === 'string') { + type = 'level'; + labels = values.split(','); + values = values.toLowerCase().split(','); + defaults = values.length - 1; + } + addClass(list, 'filter-list'); + addClass(list, 'filter-list-'+type); + values.forEach(function (value, i) { + if (value instanceof HTMLElement) { + value = value.dataset['filter'+ucName]; + } + if (value in processed) { + return; + } + var option = document.createElement('li'), + label = i in labels ? labels[i] : value, + active = false, + matches; + if ('' === label) { + option.innerHTML = '(none)'; } else { - el.querySelectorAll('tr[data-log-level="'+level.toLowerCase()+'"]').forEach(function (row) { - row.style.display = 'none'; + option.innerText = label; + } + option.dataset.filter = value; + option.setAttribute('title', 1 === (matches = filters.querySelectorAll('[data-filter-'+name+'="'+value+'"]').length) ? 'Matches 1 row' : 'Matches '+matches+' rows'); + indexed[value] = i; + list.appendChild(option); + addEventListener(option, 'click', function () { + if ('choice' === type) { + filters.querySelectorAll('[data-filter-'+name+']').forEach(function (row) { + if (option.dataset.filter === row.dataset['filter'+ucName]) { + toggleClass(row, 'filter-hidden-'+name); + } + }); + toggleClass(option, 'active'); + } else if ('level' === type) { + if (i === this.parentNode.querySelectorAll('.active').length - 1) { + return; + } + this.parentNode.querySelectorAll('li').forEach(function (currentOption, j) { + if (j <= i) { + addClass(currentOption, 'active'); + if (i === j) { + addClass(currentOption, 'last-active'); + } else { + removeClass(currentOption, 'last-active'); + } + } else { + removeClass(currentOption, 'active'); + removeClass(currentOption, 'last-active'); + } + }); + filters.querySelectorAll('[data-filter-'+name+']').forEach(function (row) { + if (i < indexed[row.dataset['filter'+ucName]]) { + addClass(row, 'filter-hidden-'+name); + } else { + removeClass(row, 'filter-hidden-'+name); + } + }); + } + }); + if ('choice' === type) { + active = null === defaults || 0 <= defaults.indexOf(value); + } else if ('level' === type) { + active = i <= defaults; + if (active && i === defaults) { + addClass(option, 'last-active'); + } + } + if (active) { + addClass(option, 'active'); + } else { + filters.querySelectorAll('[data-filter-'+name+'="'+value+'"]').forEach(function (row) { + toggleClass(row, 'filter-hidden-'+name); }); } + processed[value] = true; }); - el.parentNode.insertBefore(bullets, el); + + if (1 < list.childNodes.length) { + filter.appendChild(list); + filter.dataset.filtered = ''; + } }); } }; diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig index bae9317229..c28e9ae1c2 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig @@ -1,3 +1,5 @@ +{# This file is partially duplicated in TwigBundle/Resources/views/exceotion.css.twig. + If you make any change in this file, verify the same change is needed in the other file. #} {# Normalization (normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css) ========================================================================= #} @@ -7,7 +9,7 @@ --font-sans-serif: 'Helvetica, Arial, sans-serif'; --page-background: #f9f9f9; --color-text: #222; - --color-muted: #777; + --color-muted: #999; /* when updating any of these colors, do the same in toolbar.css.twig */ --color-success: #4f805d; --color-warning: #a46a1f; @@ -28,7 +30,6 @@ --table-header: #e0e0e0; --shadow: 0px 0px 1px rgba(128, 128, 128, .2); --border: 1px solid #e0e0e0; - --color-muted: #999; --base-0: #fff; --base-1: #f5f5f5; --base-2: #e0e0e0; @@ -892,9 +893,6 @@ tr.status-warning td { background-color: var(--base-5); color: var(--base-2); } -.tab-content { - position: relative; -} .tab-content > *:first-child { margin-top: 0; } @@ -917,6 +915,42 @@ tr.status-warning td { display: block; } +{# Filters + ========================================================================= #} +[data-filters] { position: relative; } +[data-filtered] { cursor: pointer; } +[data-filtered]:after { content: '\00a0\25BE'; } +[data-filtered]:hover .filter-list li { display: inline-flex; } +[class*="filter-hidden-"] { display: none; } +.filter-list { position: absolute; border: var(--border); box-shadow: var(--shadow); margin: 0; padding: 0; display: flex; flex-direction: column; } +.filter-list :after { content: ''; } +.filter-list li { + background: var(--tab-disabled-background); + border-bottom: var(--border); + color: var(--tab-disabled-color); + display: none; + list-style: none; + margin: 0; + padding: 5px 10px; + text-align: left; + font-weight: normal; +} +.filter-list li.active { + background: var(--tab-background); + color: var(--tab-color); +} +.filter-list li.last-active { + background: var(--tab-active-background); + color: var(--tab-active-color); +} + +.filter-list-level li { cursor: s-resize; } +.filter-list-level li.active { cursor: n-resize; } +.filter-list-level li.last-active { cursor: default; } +.filter-list-level li.last-active:before { content: '\2714\00a0'; } +.filter-list-choice li:before { content: '\2714\00a0'; color: var(--tab-background); } +.filter-list-choice li.active:before { color: unset; } + {# Twig panel ========================================================================= #} #twig-dump pre { @@ -958,45 +992,6 @@ table.logs .metadata { display: block; font-size: 12px; } -table.logs tr td:last-child { width: 100%; } - -.log-levels { position: absolute; right: 5px; top: 33px; } -.log-levels { border: var(--border); box-shadow: var(--shadow); margin: 0; padding: 0; display: flex; flex-direction: column; align-items: flex-end; } -.log-levels:before { - content: "Filter"; - cursor: pointer; - /* "filter" icon provided by FontAwesome - CC BY 4.0 License - https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt */ - background: var(--table-background) no-repeat url('data:image/svg+xml;utf8,'); - background-position: 6px 6px; - background-size: 14px 14px; - padding: 4px 10px 4px 24px; - position: absolute; - top: -28px; -} -.log-levels:hover li { display: inline-flex; } -.log-levels li { - background: var(--tab-disabled-background); - border-bottom: var(--border); - color: var(--tab-disabled-color); - cursor: s-resize; - display: none; - list-style: none; - margin: 0; - padding: 5px 10px; - text-align: left; - width: 100%; -} -.log-levels li.active { - background: var(--tab-background); - color: var(--tab-color); - cursor: n-resize; -} -.log-levels li.last-active { - background: var(--tab-active-background); - color: var(--tab-active-color); - cursor: unset; -} {# Doctrine panel ========================================================================= #} diff --git a/src/Symfony/Bundle/WebProfilerBundle/composer.json b/src/Symfony/Bundle/WebProfilerBundle/composer.json index 4c48a0cc73..0f4d40879d 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/composer.json +++ b/src/Symfony/Bundle/WebProfilerBundle/composer.json @@ -18,7 +18,7 @@ "require": { "php": "^7.1.3", "symfony/config": "^4.2", - "symfony/http-kernel": "~4.1", + "symfony/http-kernel": "~4.2", "symfony/routing": "~3.4|~4.0", "symfony/twig-bundle": "~4.2", "symfony/var-dumper": "~3.4|~4.0", diff --git a/src/Symfony/Component/HttpKernel/DataCollector/LoggerDataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/LoggerDataCollector.php index 533d3217b3..3081ac7fb5 100644 --- a/src/Symfony/Component/HttpKernel/DataCollector/LoggerDataCollector.php +++ b/src/Symfony/Component/HttpKernel/DataCollector/LoggerDataCollector.php @@ -134,7 +134,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte $log['timestamp'] = $bootTime; $log['priority'] = 100; $log['priorityName'] = 'DEBUG'; - $log['channel'] = '-'; + $log['channel'] = null; $log['scream'] = false; unset($log['type'], $log['file'], $log['line'], $log['trace'], $log['trace'], $log['count']); $logs[] = $log;