blob: f32aa0b3be9862deb16fd7d4a3906c9d2b253379 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.18) on Wed Mar 01 02:01:42 GMT 2023 -->
<title>LoggingHelper (Heron Java API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2023-03-01">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="LoggingHelper (Heron Java API)";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.heron.common.utils.logging</a></div>
<h2 title="Class LoggingHelper" class="title">Class LoggingHelper</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.heron.common.utils.logging.LoggingHelper</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public final class <span class="typeNameLabel">LoggingHelper</span>
extends java.lang.Object</pre>
<div class="block">A helper class to init corresponding LOGGER setting
loggerInit() is required to invoke before any logging
<p>
Credits: https://blogs.oracle.com/nickstephen/entry/java_redirecting_system_out_and</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LoggingHelper.LoggingOutputStream.html" title="class in org.apache.heron.common.utils.logging">LoggingHelper.LoggingOutputStream</a></span></code></th>
<td class="colLast">
<div class="block">An OutputStream that writes contents to a Logger upon each call to flush()</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="LoggingHelper.StdOutErrLevel.html" title="class in org.apache.heron.common.utils.logging">LoggingHelper.StdOutErrLevel</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addLoggingHandler(java.util.logging.Handler)">addLoggingHandler</a></span>&#8203;(java.util.logging.Handler&nbsp;handler)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static java.util.logging.FileHandler</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getFileHandler(java.lang.String,java.lang.String,boolean,org.apache.heron.common.basics.ByteAmount,int)">getFileHandler</a></span>&#8203;(java.lang.String&nbsp;processId,
java.lang.String&nbsp;loggingDir,
boolean&nbsp;append,
<a href="../../basics/ByteAmount.html" title="class in org.apache.heron.common.basics">ByteAmount</a>&nbsp;limit,
int&nbsp;count)</code></th>
<td class="colLast">
<div class="block">Initialize a <tt>FileHandler</tt> to write to a set of files
with optional append.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#loggerInit(java.util.logging.Level,boolean)">loggerInit</a></span>&#8203;(java.util.logging.Level&nbsp;level,
boolean&nbsp;isRedirectStdOutErr)</code></th>
<td class="colLast">
<div class="block">Init java util logging with default format</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#loggerInit(java.util.logging.Level,boolean,java.lang.String)">loggerInit</a></span>&#8203;(java.util.logging.Level&nbsp;level,
boolean&nbsp;isRedirectStdOutErr,
java.lang.String&nbsp;format)</code></th>
<td class="colLast">
<div class="block">Init java util logging</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setLoggingFormat(java.lang.String)">setLoggingFormat</a></span>&#8203;(java.lang.String&nbsp;format)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="loggerInit(java.util.logging.Level,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>loggerInit</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;loggerInit&#8203;(java.util.logging.Level&nbsp;level,
boolean&nbsp;isRedirectStdOutErr)
throws java.io.IOException</pre>
<div class="block">Init java util logging with default format</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>level</code> - the Level of message to log</dd>
<dd><code>isRedirectStdOutErr</code> - whether we redirect std out&amp;err</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a id="loggerInit(java.util.logging.Level,boolean,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>loggerInit</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;loggerInit&#8203;(java.util.logging.Level&nbsp;level,
boolean&nbsp;isRedirectStdOutErr,
java.lang.String&nbsp;format)
throws java.io.IOException</pre>
<div class="block">Init java util logging</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>level</code> - the Level of message to log</dd>
<dd><code>isRedirectStdOutErr</code> - whether we redirect std out&amp;err</dd>
<dd><code>format</code> - the format to log</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a id="setLoggingFormat(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLoggingFormat</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;setLoggingFormat&#8203;(java.lang.String&nbsp;format)</pre>
</li>
</ul>
<a id="addLoggingHandler(java.util.logging.Handler)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addLoggingHandler</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;addLoggingHandler&#8203;(java.util.logging.Handler&nbsp;handler)</pre>
</li>
</ul>
<a id="getFileHandler(java.lang.String,java.lang.String,boolean,org.apache.heron.common.basics.ByteAmount,int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getFileHandler</h4>
<pre class="methodSignature">public static&nbsp;java.util.logging.FileHandler&nbsp;getFileHandler&#8203;(java.lang.String&nbsp;processId,
java.lang.String&nbsp;loggingDir,
boolean&nbsp;append,
<a href="../../basics/ByteAmount.html" title="class in org.apache.heron.common.basics">ByteAmount</a>&nbsp;limit,
int&nbsp;count)
throws java.io.IOException,
java.lang.SecurityException</pre>
<div class="block">Initialize a <tt>FileHandler</tt> to write to a set of files
with optional append. When (approximately) the given limit has
been written to one file, another file will be opened. The
output will cycle through a set of count files.
The pattern of file name should be: ${processId}.log.index
<p>
The <tt>FileHandler</tt> is configured based on <tt>LogManager</tt>
properties (or their default values) except that the given pattern
argument is used as the filename pattern, the file limit is
set to the limit argument, and the file count is set to the
given count argument, and the append mode is set to the given
<tt>append</tt> argument.
<p>
The count must be at least 1.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>limit</code> - the maximum number of bytes to write to any one file</dd>
<dd><code>count</code> - the number of files to use</dd>
<dd><code>append</code> - specifies append mode</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if there are IO problems opening the files.</dd>
<dd><code>java.lang.SecurityException</code> - if a security manager exists and if
the caller does not have <tt>LoggingPermission("control")</tt>.</dd>
<dd><code>java.lang.IllegalArgumentException</code> - if <code>limit &lt; 0</code>, or <code>count &lt; 1</code>.</dd>
<dd><code>java.lang.IllegalArgumentException</code> - if pattern is an empty string</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>