@using NzbDrone.Core.Instrumentation @model IEnumerable<Log> @{ ViewBag.Title = "Logs";} @section ActionMenu{ <ul class="sub-menu"> <li>@Ajax.ActionLink("Clear Logs", "Clear", "Log", null, new AjaxOptions{ OnSuccess = "redrawGrid", Confirm = "Delete all logs?" }, new { Title = "Delete all logs" })</li> <li>@Html.ActionLink("File", "File", "Log", null, new { Title = "View debug log file" })</li> </ul> } @section HeaderContent{ <style> #logGrid td { padding: 2px 8px 2px 8px; } </style> } <div class="infoBox"> Log entries older than 30 days are automatically deleted.</div> <div class="grid-container"> <table id="logGrid" class="dataTablesGrid hidden-grid"> <thead> <tr> <th> Time </th> <th> Level </th> <th> Source </th> <th> Message </th> @*Details Column*@ <th style="display: none;"> Details </th> </tr> </thead> <tbody> </tbody> </table> </div> @section Scripts{ <script type="text/javascript"> $(document).ready(function () { $('.dataTablesGrid').removeClass('hidden-grid'); oTable = $('#logGrid').dataTable({ "sAjaxSource": "/log/ajaxbinding", "bProcessing": false, "bServerSide": true, "bShowAll": false, "bPaginate": true, "bLengthChange": false, "bFilter": true, "bSort": true, "bInfo": true, "bAutoWidth": false, "iDisplayLength": 50, "sPaginationType": "four_button", "aoColumns": [ { sName: "Time", sWidth: '150px', "mDataProp": "Time", bSearchable: false }, //Time { sName: "Level", sWidth: '60px', "mDataProp": "Level" }, //Level { sName: "Logger", sWidth: '240px', "mDataProp": "Source" }, //Source { sName: "Message", sWidth: 'auto', "mDataProp": "Message", "bSortable": false }, //Message { sName: "Exception", sWidth: 'auto', "mDataProp": "Details", "bSortable": false, "bVisible": false, "fnRender": function (row) { var result = "<div>Method: " + row.aData["Method"] + "</div>"; if (row.aData["ExceptionType"] !== null) { result += "<div>Exception Type: " + row.aData["ExceptionType"] + "</div>" + "<div class=\"stackFrame\">Exception: " + row.aData["Exception"] + "</div>"; } return result; } } //Details ], "aaSorting": [[0, 'desc']], "fnRowCallback": function (nRow, aData, iDisplayIndex, iDisplayIndexFull) { fnRowCallback(nRow, aData); } }); }); function fnRowCallback(nRow, aData) { if (aData["Level"] == "Warn") { nRow.style.backgroundColor = "#FFD700"; } else if (aData["Level"] == "Error") { nRow.style.backgroundColor = "#FF7500"; } else if (aData["Level"] == "Fatal") { nRow.style.backgroundColor = "black"; nRow.style.color = "red"; } } </script> }