Skip to content

Commit 15d9586

Browse files
committed
Init
1 parent 540a213 commit 15d9586

File tree

9 files changed

+419
-102
lines changed

9 files changed

+419
-102
lines changed

core/src/main/resources/hudson/logging/LogRecorder/configure.jelly

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,13 @@ THE SOFTWARE.
2626
Config page
2727
-->
2828
<?jelly escape-by-default='true'?>
29-
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
30-
<l:layout permission="${app.ADMINISTER}" title="${%Configure log recorder}" type="one-column">
31-
<l:breadcrumb title="${%Configure log recorder}" />
29+
<j:jelly xmlns:j="jelly:core" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
30+
<l:settings-subpage permission="${app.ADMINISTER}" title="${%Configure log recorder}" includeBreadcrumb="true" header="${null}">
31+
<l:app-bar title="${%Configure log recorder}">
32+
<t:help href="https://www.jenkins.io/redirect/log-recorders" tooltip="${%Additional information on log levels}" />
33+
</l:app-bar>
3234

33-
<l:main-panel>
34-
<l:app-bar title="${%Configure log recorder}">
35-
<t:help href="https://www.jenkins.io/redirect/log-recorders" tooltip="${%Additional information on log levels}" />
36-
</l:app-bar>
37-
38-
<f:form method="post" name="config" action="configSubmit">
35+
<f:form method="post" name="config" action="configSubmit">
3936
<div class="jenkins-alert jenkins-alert-info jenkins-form-item">
4037
${%fine_warning}
4138
</div>
@@ -68,6 +65,5 @@ THE SOFTWARE.
6865
</f:entry>
6966
<f:saveApplyBar/>
7067
</f:form>
71-
</l:main-panel>
72-
</l:layout>
68+
</l:settings-subpage>
7369
</j:jelly>

core/src/main/resources/hudson/logging/LogRecorder/index.jelly

Lines changed: 41 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -28,53 +28,51 @@ THE SOFTWARE.
2828
<?jelly escape-by-default='true'?>
2929
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout"
3030
xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:dd="/lib/layout/dropdowns">
31-
<l:layout title="Log" permission="${app.SYSTEM_READ}" type="one-column">
31+
<l:settings-subpage title="${it.displayName}" permission="${app.SYSTEM_READ}" header="${null}">
3232
<!-- no need for additional breadcrumb here as we're on an index page already including breadcrumb -->
33-
<l:main-panel>
34-
<j:set var="noLogs" value="${it.logRecords.isEmpty() and it.slaveLogRecords.isEmpty()}" />
33+
<j:set var="noLogs" value="${it.logRecords.isEmpty() and it.slaveLogRecords.isEmpty()}" />
3534

36-
<l:app-bar title="${it.displayName}">
35+
<l:app-bar title="${it.displayName}">
36+
<l:isAdmin>
37+
<j:if test="${!noLogs}">
38+
<form method="post" id='clear-logrecorder' action="clear">
39+
<f:submit icon="symbol-close-circle"
40+
value="${%Clear This Log}"
41+
primary="false" />
42+
</form>
43+
</j:if>
44+
<a class="jenkins-button" href="configure">
45+
Configure
46+
</a>
47+
</l:isAdmin>
48+
<l:overflowButton>
49+
<dd:header text="${%Atom feed}" />
50+
<st:include it="${it.parent}" page="feeds.jelly" />
3751
<l:isAdmin>
38-
<j:if test="${!noLogs}">
39-
<form method="post" id='clear-logrecorder' action="clear">
40-
<f:submit icon="symbol-close-circle"
41-
value="${%Clear This Log}"
42-
primary="false" />
43-
</form>
44-
</j:if>
45-
<a class="jenkins-button" href="configure">
46-
Configure
47-
</a>
52+
<dd:separator />
53+
<dd:custom>
54+
<l:confirmationLink class="jenkins-dropdown__item jenkins-!-destructive-color"
55+
href="doDelete"
56+
message="${%delete.logrecorder(it.displayName)}"
57+
post="true">
58+
<div class="jenkins-dropdown__item__icon">
59+
<l:icon src="symbol-trash" />
60+
</div>
61+
${%Delete log recorder}
62+
</l:confirmationLink>
63+
</dd:custom>
4864
</l:isAdmin>
49-
<l:overflowButton>
50-
<dd:header text="${%Atom feed}" />
51-
<st:include it="${it.parent}" page="feeds.jelly" />
52-
<l:isAdmin>
53-
<dd:separator />
54-
<dd:custom>
55-
<l:confirmationLink class="jenkins-dropdown__item jenkins-!-destructive-color"
56-
href="doDelete"
57-
message="${%delete.logrecorder(it.displayName)}"
58-
post="true">
59-
<div class="jenkins-dropdown__item__icon">
60-
<l:icon src="symbol-trash" />
61-
</div>
62-
${%Delete log recorder}
63-
</l:confirmationLink>
64-
</dd:custom>
65-
</l:isAdmin>
66-
</l:overflowButton>
67-
</l:app-bar>
65+
</l:overflowButton>
66+
</l:app-bar>
6867

69-
<j:if test="${noLogs}">
70-
<l:notice title="${%No logs available}" icon="symbol-journal" />
71-
</j:if>
68+
<j:if test="${noLogs}">
69+
<l:notice title="${%No logs available}" icon="symbol-journal" />
70+
</j:if>
7271

73-
<t:logRecords logRecords="${it.logRecords}"/>
74-
<j:forEach var="entry" items="${it.slaveLogRecords.entrySet()}">
75-
<h2><a href="${rootURL}/${entry.key.url}" class="model-link">${entry.key.displayName}</a></h2>
76-
<t:logRecords logRecords="${entry.value}"/>
77-
</j:forEach>
78-
</l:main-panel>
79-
</l:layout>
72+
<t:logRecords logRecords="${it.logRecords}"/>
73+
<j:forEach var="entry" items="${it.slaveLogRecords.entrySet()}">
74+
<h2><a href="${rootURL}/${entry.key.url}" class="model-link">${entry.key.displayName}</a></h2>
75+
<t:logRecords logRecords="${entry.value}"/>
76+
</j:forEach>
77+
</l:settings-subpage>
8078
</j:jelly>

core/src/main/resources/hudson/logging/LogRecorderManager/all.jelly

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,16 @@ THE SOFTWARE.
2727
-->
2828
<?jelly escape-by-default='true'?>
2929
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:l="/lib/layout" xmlns:t="/lib/hudson">
30-
<l:layout title="${%All Jenkins Logs}" type="one-column">
31-
<l:breadcrumb title="${%All Jenkins Logs}" />
32-
<l:main-panel>
33-
<l:app-bar title="${%All Jenkins Logs}">
34-
<l:overflowButton icon="symbol-rss" text="${%Atom feed}" tooltip="${null}">
35-
<st:include page="feeds.jelly" />
36-
</l:overflowButton>
37-
</l:app-bar>
30+
<l:settings-subpage title="${%All Jenkins Logs}" includeBreadcrumb="true" header="${null}">
31+
<l:app-bar title="${%All Jenkins Logs}">
32+
<l:overflowButton icon="symbol-rss" text="${%Atom feed}" tooltip="${null}">
33+
<st:include page="feeds.jelly" />
34+
</l:overflowButton>
35+
</l:app-bar>
3836

39-
<div class="jenkins-alert jenkins-alert-info">
40-
Log messages at a level more verbose than INFO (i.e., CONFIG, FINE, FINER, FINEST) are never recorded in the Jenkins log. Use <a href=".">log recorders</a> to record these log messages.
41-
</div>
42-
<t:logRecords logRecords="${h.logRecords}"/>
43-
</l:main-panel>
44-
</l:layout>
37+
<div class="jenkins-alert jenkins-alert-info">
38+
Log messages at a level more verbose than INFO (i.e., CONFIG, FINE, FINER, FINEST) are never recorded in the Jenkins log. Use <a href=".">log recorders</a> to record these log messages.
39+
</div>
40+
<t:logRecords logRecords="${h.logRecords}"/>
41+
</l:settings-subpage>
4542
</j:jelly>

core/src/main/resources/hudson/logging/LogRecorderManager/index.jelly

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ THE SOFTWARE.
3131
<l:view>
3232
<l:app-bar title="${it.managementLink.displayName}">
3333
<l:isAdmin>
34-
<a href="new" class="jenkins-button jenkins-button--primary">
34+
<button class="jenkins-button jenkins-button--primary"
35+
data-type="dialog-opener"
36+
data-dialog-url="newDialog">
3537
<l:icon src="symbol-add" />
3638
${%Add recorder}
37-
</a>
39+
</button>
3840
</l:isAdmin>
3941
<a href="levels" class="jenkins-button">
4042
${%Log levels}

core/src/main/resources/hudson/logging/LogRecorderManager/levels.jelly

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -26,36 +26,35 @@ THE SOFTWARE.
2626
Show form to adjust log levels
2727
-->
2828
<?jelly escape-by-default='true'?>
29-
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
30-
<l:layout title="${%Logger Configuration}" type="one-column">
31-
<l:breadcrumb title="${%Log Levels}" />
29+
<j:jelly xmlns:j="jelly:core" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
30+
<l:settings-subpage title="${%Log levels}" header="${null}" includeBreadcrumb="true">
31+
<l:app-bar title="${%Log levels}">
32+
<t:help tooltip="${%Additional information on log levels}" href="${%url}"/>
33+
</l:app-bar>
3234

33-
<l:main-panel>
34-
<l:app-bar title="${%Logger Configuration}">
35-
<t:help tooltip="${%Additional information on log levels}" href="${%url}"/>
36-
</l:app-bar>
35+
<p class="jenkins-page-description">${%defaultLoggerMsg}</p>
3736

38-
<table class="sortable jenkins-table" id="logLevels">
39-
<thead>
37+
<table class="sortable jenkins-table" id="logLevels">
38+
<thead>
39+
<tr>
40+
<th>${%Name}</th>
41+
<th>${%Level}</th>
42+
</tr>
43+
</thead>
44+
<j:invokeStatic var="lm" className="java.util.logging.LogManager" method="getLogManager"/>
45+
<j:forEach var="name" items="${h.loggerNames}">
46+
<j:set var="logger" value="${lm.getLogger(name)}"/>
47+
<j:if test="${logger.level != null}">
4048
<tr>
41-
<th>${%Name}</th>
42-
<th>${%Level}</th>
49+
<td>${name}</td>
50+
<td>${logger.level}</td>
4351
</tr>
44-
</thead>
45-
<j:invokeStatic var="lm" className="java.util.logging.LogManager" method="getLogManager"/>
46-
<j:forEach var="name" items="${h.loggerNames}">
47-
<j:set var="logger" value="${lm.getLogger(name)}"/>
48-
<j:if test="${logger.level != null}">
49-
<tr>
50-
<td>${name}</td>
51-
<td>${logger.level}</td>
52-
</tr>
53-
</j:if>
54-
</j:forEach>
55-
</table>
56-
<p>${%defaultLoggerMsg}</p>
57-
<l:isAdmin>
58-
<h2>${%Adjust Levels}</h2>
52+
</j:if>
53+
</j:forEach>
54+
</table>
55+
56+
<l:isAdmin>
57+
<f:section title="${%Adjust Levels}">
5958
<form action="configLogger" method="post" name="configLogger">
6059
<f:entry>
6160
<label class="jenkins-form-label" for="name">${%Name}</label>
@@ -82,7 +81,7 @@ THE SOFTWARE.
8281
<f:submit value="${%Save}"/>
8382
</f:bottomButtonBar>
8483
</form>
85-
</l:isAdmin>
86-
</l:main-panel>
87-
</l:layout>
84+
</f:section>
85+
</l:isAdmin>
86+
</l:settings-subpage>
8887
</j:jelly>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<!--
2+
The MIT License
3+
4+
Copyright (c) 2026, Jan Faracik
5+
6+
Permission is hereby granted, free of charge, to any person obtaining a copy
7+
of this software and associated documentation files (the "Software"), to deal
8+
in the Software without restriction, including without limitation the rights
9+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
copies of the Software, and to permit persons to whom the Software is
11+
furnished to do so, subject to the following conditions:
12+
13+
The above copyright notice and this permission notice shall be included in
14+
all copies or substantial portions of the Software.
15+
16+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22+
THE SOFTWARE.
23+
-->
24+
25+
<?jelly escape-by-default='true'?>
26+
<j:jelly xmlns:j="jelly:core" xmlns:l="/lib/layout" xmlns:st="jelly:stapler" xmlns:f="/lib/form">
27+
<st:setHeader name="X-Dialog-Title" value="${%Add recorder}" />
28+
29+
<l:ajax>
30+
<f:form name="configSubmit" method="post" action="newLogRecorder">
31+
<f:entry title="${%Name}">
32+
<f:textbox name="name" checkDependsOn="name" checkUrl="checkNewName" autofocus="true" />
33+
</f:entry>
34+
35+
<f:bottomButtonBar>
36+
<f:submit value="${%Create}" />
37+
</f:bottomButtonBar>
38+
</f:form>
39+
</l:ajax>
40+
</j:jelly>

0 commit comments

Comments
 (0)