|
|
<ng-include src="'templates/loader.html'" ng-if="$ctrl.isLoading.logs"></ng-include>
|
|
|
|
|
|
<div ng-if="$ctrl.isLoading.logs === false">
|
|
|
|
|
|
<p class="search-params">
|
|
|
<strong>Search params:</strong>
|
|
|
<span ng-repeat="tag in $ctrl.searchParams.tags" class="tag">
|
|
|
<strong>{{tag.type}}</strong>
|
|
|
{{ tag.type == 'resource' ? $ctrl.applications[tag.value].resource_name : tag.value }}
|
|
|
|
|
|
<a ng-click="$ctrl.removeSearchTag(tag)"><span class="fa fa-times"></span></a>
|
|
|
</span>
|
|
|
</p>
|
|
|
|
|
|
<p>
|
|
|
|
|
|
<script type="text/ng-template" id="SearchTypeAheadUrl.html">
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<form class="form">
|
|
|
<div class="typeahead-tags">
|
|
|
<input type="text" id="typeAhead" ng-model="$ctrl.filterTypeAhead" placeholder="Start typing to filter logs for events, filter by servers, namespaces, levels."
|
|
|
ng-keydown="$ctrl.typeAheadTag($event)"
|
|
|
uib-typeahead="tag as tag.text for tag in $ctrl.filterTypeAheadOptions | filter:$viewValue:$ctrl.aheadFilter"
|
|
|
typeahead-min-length="1" class="form-control"
|
|
|
typeahead-template-url="templates/directives/search_type_ahead.html">
|
|
|
</div>
|
|
|
</form>
|
|
|
|
|
|
<div class="well animate-show position-absolute increse-zindex" ng-if="$ctrl.showDatePicker" ng-model="$ctrl.pickerDate" ng-change="$ctrl.pickerDateChanged()">
|
|
|
<uib-datepicker></uib-datepicker>
|
|
|
</div>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
<div class="panel">
|
|
|
|
|
|
<div class="panel-body">
|
|
|
<c3chart data-domid="log_events_chart" data-data="$ctrl.logEventsChartData" data-config="$ctrl.logEventsChartConfig">
|
|
|
</c3chart>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="text-center">
|
|
|
<uib-pagination total-items="$ctrl.itemCount" items-per-page="$ctrl.itemsPerPage" ng-model="$ctrl.page" max-size="10"
|
|
|
ng-change="$ctrl.paginationChange()"
|
|
|
class="pagination pagination-sm" boundary-links="true" direction-links="false"></uib-pagination>
|
|
|
</div>
|
|
|
|
|
|
<div class="panel panel-default">
|
|
|
|
|
|
<table class="table table-striped log-list">
|
|
|
<caption>Logs</caption>
|
|
|
<thead>
|
|
|
<tr>
|
|
|
<th class="c1 resource">Application</th>
|
|
|
<th class="c2 message">Message</th>
|
|
|
<th class="c3 when">When</th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
<tbody>
|
|
|
<tr ng-repeat="log in $ctrl.logsPage track by log.log_id" class="{{$odd ? 'odd' : 'even'}}">
|
|
|
<td class="c1">
|
|
|
<a class="tag application" ng-click="$ctrl.addSearchTag({type:'resource', value:log.resource_id})">
|
|
|
<span class="name">{{log.resource_name}}</span></a>
|
|
|
</td>
|
|
|
<td class="c2">
|
|
|
<a class="tag {{log.log_level|lowercase}}" ng-click="$ctrl.addSearchTag({type:'level', value:log.log_level})">
|
|
|
<span class="name">level:</span> {{log.log_level}}</a>
|
|
|
<a class="tag" ng-click="$ctrl.addSearchTag({type:'namespace', value:log.namespace})">
|
|
|
<span class="name">namespace:</span> {{log.namespace}}</a>
|
|
|
<a ng-repeat="(tag, value) in log.tags" class="tag" ng-click="$ctrl.addSearchTag({type:tag, value:value})">
|
|
|
<span class="name">{{tag}}:</span> {{value}}</a>
|
|
|
<div class="log">{{log.message}}</div>
|
|
|
</td>
|
|
|
<td class="c3 when">
|
|
|
<a ng-click="$ctrl.filterId(log)" data-uib-tooltip="{{log.timestamp}}">
|
|
|
<iso-to-relative-time time="{{log.timestamp}}"/>
|
|
|
</a>
|
|
|
</td>
|
|
|
</tr>
|
|
|
|
|
|
</tbody>
|
|
|
</table>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="text-center">
|
|
|
<uib-pagination total-items="$ctrl.itemCount" items-per-page="$ctrl.itemsPerPage" ng-model="$ctrl.page" max-size="10"
|
|
|
ng-change="$ctrl.paginationChange()"
|
|
|
class="pagination pagination-sm" boundary-links="true" direction-links="false"></uib-pagination>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|