{{!
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
}}{{?raw}}
INFO logs
Log path is: {{logfile}}
{{?log}}
Showing last {{web_log_bytes}} bytes of log

{{{log}}}
{{/log}}
{{^log}}
Couldn't open INFO log file: {{logfile}}
{{/log}}
{{/raw}}

{{^raw}}
<h2>INFO logs</h2>
Log path is: {{logfile}}
<br/>
{{?log}}
Showing last {{web_log_bytes}} bytes of log

<pre>{{log}}</pre>
{{/log}}
{{^log}}
Couldn't open INFO log file: {{logfile}}
{{/log}}
{{/raw}}
