Code Monkey home page Code Monkey logo

jloglevel's Introduction

jloglevel

Build Status

jloglevel is a command line tool for changing the logging level in JVM apps in runtime via Jolokia.

How it works

JVM has a technology Java Management Extensions (JMX) that allows to monitor and manage JVM applications in runtime. This is done via components called MBeans (managed beans). MBeans have attributes that can be read and operations (methods) that can be executed with JMX.

JVM logging libraries expose MBeans which apart from other features allow control of the logging level in runtime. That means that we can change the logging level of loggers inside the application without restart or modification of files.

JMX has a drawback: it doesn't go well with firewalls, especially in dynamic cloud environments. To overcome this issues, JMX-HTTP bridges exist, and Jolokia is probably the most popular of them. It exposes JMX MBeans over HTTP and allows us to read attributes and call methods using simple GETs and POSTs.

Combining all this together, jloglevel makes it easy to get and set the logging level on a number of JVM applications (e.g. a scaled-out service).

Currently, only Logback library is supported.

Installation

$ pip3 install jloglevel

Usage prerequisites

  1. Jolokia agent needs to be attached to a JVM (or JVMs) you are going to work with. Follow the Jolokia documentation for the details.

  2. Logback must be configured to expose its control via JMX. Technically only <jmxConfigurator /> needs tp be added to logback.xml. See JMX Configurator page in the documentation for the details.

Usage

Common options

There are two common options in every command:

-h or --host to specify the IP address and the port where Jolokia agent is listening for incoming connections. Can be multiple. Example: -h 192.168.2.1:8778 -h 192.168.2.2:8778 -h 192.168.2.3:8778

--socks5 for specifying the SOCKS5 proxy IP address and port (if needed). Example: --socks5 127.0.0.1:9999

This might be useful with SSH.

Listing all loggers

To list the loggers use list-loggers command:

$ jloglevel list-loggers -h 192.168.2.1:8778

http://192.168.2.1:8778/
ROOT
me
me.ivanyu
me.ivanyu.agenthost
me.ivanyu.agenthost.App

Getting the logging level

To get the logging levels use get command:

$ jloglevel get -h 192.168.2.1:8778 -h 192.168.2.2:8778 -h 192.168.2.3:8778

Logger ROOT
http://192.168.2.1:8778/	DEBUG
http://192.168.2.2:8778/	DEBUG
http://192.168.2.3:8778/	DEBUG

By default, the logger is ROOT. You can get the logging level of another logger using -l/--logger option:

$ jloglevel get -h 192.168.2.1:8778 -l me.ivanyu.testapp.App

Logger me.ivanyu.testapp.App
http://192.168.2.1:8778/	DEBUG

Setting the logging level

To set the logging levels use set command:

$ jloglevel set -h 192.168.2.1:8778 -h 192.168.2.2:8778 -h 192.168.2.3:8778 TRACE

Logger ROOT
http://192.168.2.1:8778/	OK
http://192.168.2.2:8778/	OK
http://192.168.2.3:8778/	OK

Starting from this moment, the logging level of the ROOT logger is TRACE.

As with get command, you can specify a logger different from the default ROOT using -l/--logger option:

$ jloglevel set -h 192.168.2.1:8778 -l me.ivanyu.testapp.App TRACE

Logger me.ivanyu.testapp.App
http://192.168.2.1:8778/	OK

Authors and Contributors

The project is started and maintained by Ivan Yurchenko ([email protected]).

Contributions are welcome!

License

Copyright 2017 Ivan Yurchenko

Licensed 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.

jloglevel's People

Contributors

ivanyu avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

jloglevel's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.