You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "jahar (JIRA)" <ji...@apache.org> on 2018/06/28 07:31:00 UTC

[jira] [Resolved] (ZOOKEEPER-3070) Not Able to Change Zookeeper Logging via JMX Call

     [ https://issues.apache.org/jira/browse/ZOOKEEPER-3070?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

jahar resolved ZOOKEEPER-3070.
------------------------------
       Resolution: Not A Problem
    Fix Version/s: 3.4.5

Just found the way to achieve it. Was straight forward but I went into different direction.

Below is the code:
{quote}_JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:2167/jmxrmi");_
 _JMXConnector jmxConnector = JMXConnectorFactory.connect(url);_
 _MBeanServerConnection mbeanServerConnection = jmxConnector.getMBeanServerConnection();_
 _ObjectName mbeanName2 = new ObjectName("log4j:logger=root");_
 _System.out.println(mbeanServerConnection.getAttribute(mbeanName2, "priority"));_
 _mbeanServerConnection.setAttribute(mbeanName2, new Attribute("priority", "DEBUG"));_
{quote}
 

> Not Able to Change Zookeeper Logging via JMX Call
> -------------------------------------------------
>
>                 Key: ZOOKEEPER-3070
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3070
>             Project: ZooKeeper
>          Issue Type: Improvement
>          Components: jmx
>    Affects Versions: 3.4.5
>         Environment: Using Java 8 for writing standalone code to update the MBeans in zookeeper which is running in Windows machine for POC purpose.
> Zookeeper Version is : 3.4.5
>            Reporter: jahar
>            Priority: Blocker
>             Fix For: 3.4.5
>
>         Attachments: jconsole.JPG, zkpg.JPG
>
>
> Hi,
> I wanted to change the logging level of zookeeper dynamically via a JMX call programmatically. Apache Zookeeper official page specifies that it is possible to change the Mbeans via JMX calls and I have verified this through JConsole also.
> !zkpg.JPG!
> But the problem is that I am not able to update the Mbeans related to log4j through my code. I do see an API which can be used to access the Mbeans related to Object "org.apache.ZooKeeperService:name0=StandaloneServer_port-1" below is the screengrab of Jconsole and my code:
> !jconsole.JPG!
>  
> Here goes my Code:
> {quote}public static void main(String[] args) throws Exception
>  {
>  JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:2167/jmxrmi");
>  JMXConnector jmxConnector = JMXConnectorFactory.connect(url);
>  MBeanServerConnection mbeanServerConnection = jmxConnector.getMBeanServerConnection();
>  ObjectName mbeanName = new ObjectName("org.apache.ZooKeeperService:name0=StandaloneServer_port-1");
>  ZooKeeperServerMXBean newProxyInstance = MBeanServerInvocationHandler.newProxyInstance(mbeanServerConnection,
>  mbeanName, ZooKeeperServerMXBean.class, true);
>  System.out.println(newProxyInstance.getClientPort());
>  }
> {quote}
>  
>  
> I dont see any API which can be used to access and update the log4J Mbeans e.g. "root". What I want to achieve is to update the logging of zookeeper without taking a restart.
> Please advice if some API is exposed to achieve this. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)