View Javadoc

    1   /*
    2    * Copyright 2012 The Netty Project
    3    *
    4    * The Netty Project licenses this file to you under the Apache License,
    5    * version 2.0 (the "License"); you may not use this file except in compliance
    6    * with the License. You may obtain a copy of the License at:
    7    *
    8    *   http://www.apache.org/licenses/LICENSE-2.0
    9    *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
    12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    13   * License for the specific language governing permissions and limitations
    14   * under the License.
    15   */
    16  package org.jboss.netty.util;
    17
    18  import org.jboss.netty.channel.ChannelPipeline;
    19  import org.jboss.netty.channel.ChannelSink;
    20  import org.jboss.netty.util.internal.SystemPropertyUtil;
    21
    22  /**
    23   * Determines if Netty is running in a debug mode or not.  Please note that
    24   * this is not a Java debug mode.  You can enable Netty debug mode by
    25   * specifying the {@code "org.jboss.netty.debug"} system property (e.g.
    26   * {@code java -Dorg.jboss.netty.debug ...})
    27   * <p>
    28   * If debug mode is disabled (default), the stack trace of the exceptions are
    29   * compressed to help debugging a user application.
    30   * <p>
    31   * If debug mode is enabled, the stack trace of the exceptions raised in
    32   * {@link ChannelPipeline} or {@link ChannelSink} are retained as it is to help
    33   * debugging Netty.
    34   */
    35  public final class DebugUtil {
    36
    37      /**
    38       * Returns {@code true} if and only if Netty debug mode is enabled.
    39       */
    40      public static boolean isDebugEnabled() {
    41          String value;
    42          try {
    43              value = SystemPropertyUtil.get("org.jboss.netty.debug");
    44          } catch (Exception e) {
    45              value = null;
    46          }
    47
    48          if (value == null) {
    49              return false;
    50          }
    51
    52          value = value.trim().toUpperCase();
    53          return !value.startsWith("N") &&
    54                 !value.startsWith("F") &&
    55                 !value.equals("0");
    56      }
    57
    58      private DebugUtil() {
    59          // Unused
    60      }
    61  }