# system.util.getLogger() and the .info() method

**URL:** <https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693>\
**Category:** Ignition\
**Created:** [January 23, 2018, 3:24pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693 "2018-01-23T15:24:36Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 23, 2018, 3:24pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/1 "2018-01-23T15:24:36Z")

</div>

I just noticed in a customer log that calling the info() method, which doesn’t accept the parameter substitutions that the infof() method uses, delegates to the infof() method. Which means it blows up if the given string contains any substitution characters.  
v7.9.1, fwiw. Is this a known bug?

```auto
Caused by: org.python.core.PyException: Traceback (most recent call last): File "", line 1, in File "", line 72, in checkInsert at java.util.Formatter.checkText(Unknown Source) at java.util.Formatter.parse(Unknown Source) at java.util.Formatter.format(Unknown Source) at java.util.Formatter.format(Unknown Source) at com.inductiveautomation.ignition.common.util.LoggerEx.createMessage(LoggerEx.java:200) at com.inductiveautomation.ignition.common.util.LoggerEx.infof(LoggerEx.java:279) at com.inductiveautomation.ignition.common.util.LoggerEx.info(LoggerEx.java:516) at sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) java.util.UnknownFormatConversionException: java.util.UnknownFormatConversionException: Conversion = '\'
... 27 common frames omitted
Caused by: java.util.UnknownFormatConversionException: Conversion = '\'
at java.util.Formatter.checkText(Unknown Source)
at java.util.Formatter.parse(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at com.inductiveautomation.ignition.common.util.LoggerEx.createMessage(LoggerEx.java:200)
at com.inductiveautomation.ignition.common.util.LoggerEx.infof(LoggerEx.java:279)
at com.inductiveautomation.ignition.common.util.LoggerEx.info(LoggerEx.java:516)
at sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.python.core.PyReflectedFunction. __call__ (PyReflectedFunction.java:186)
... 24 common frames omitted

```

---

<div class="post-metadata">

**Author:** ![KathyApplebaum](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kathyapplebaum/32/7261_2.png) [@KathyApplebaum](https://forum.inductiveautomation.com/u/KathyApplebaum)\
**Post date:** [January 23, 2018, 4:46pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/2 "2018-01-23T16:46:59Z")

</div>

Known and fixed in a more recent version

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 23, 2018, 4:48pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/3 "2018-01-23T16:48:34Z")

</div>

Thx. I expect to bump them to 7.9.6 after it settles in… (-:

---

<div class="post-metadata">

**Author:** ![KathyApplebaum](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kathyapplebaum/32/7261_2.png) [@KathyApplebaum](https://forum.inductiveautomation.com/u/KathyApplebaum)\
**Post date:** [January 23, 2018, 4:49pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/4 "2018-01-23T16:49:42Z")

</div>

Just looked up the ticket, and it’s in 7.9.6 so you should be good when you upgrade. 🙂

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 23, 2018, 4:55pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/5 "2018-01-23T16:55:01Z")

</div>

BTW, is this true for debug() vs. debugf() and the other pairs?

---

<div class="post-metadata">

**Author:** ![KathyApplebaum](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kathyapplebaum/32/7261_2.png) [@KathyApplebaum](https://forum.inductiveautomation.com/u/KathyApplebaum)\
**Post date:** [January 23, 2018, 6:25pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/6 "2018-01-23T18:25:48Z")

</div>

Yup, and more characters to get to 20.

---

<div class="post-metadata">

**Author:** ![Clayton.Balfour](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/clayton.balfour/32/3937_2.png) [@Clayton.Balfour](https://forum.inductiveautomation.com/u/Clayton.Balfour)\
**Post date:** [January 29, 2018, 7:09pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/7 "2018-01-29T19:09:24Z")

</div>

Hi there, I believe I am having the same issue but wanted to confirm. If this is the same issue, is there a release date planned for 7.9.6?

If this is not the same issue please let me know so I can troubleshoot further. I'd hate to wait for 7.9.6 and then find out it didn't fix the issue.

Thanks!

Here is the error message:

> Traceback (most recent call last):  
> File "event:propertyChange", line 50, in   
> at java.util.Formatter.checkText(Unknown Source)  
> at java.util.Formatter.parse(Unknown Source)  
> at java.util.Formatter.format(Unknown Source)  
> at java.util.Formatter.format(Unknown Source)  
> at com.inductiveautomation.ignition.common.util.LoggerEx.createMessage(LoggerEx.java:194)  
> at com.inductiveautomation.ignition.common.util.LoggerEx.errorf(LoggerEx.java:313)  
> at com.inductiveautomation.ignition.common.util.LoggerEx.error(LoggerEx.java:469)  
> at sun.reflect.GeneratedMethodAccessor312.invoke(Unknown Source)  
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  
> at java.lang.reflect.Method.invoke(Unknown Source)

> java.util.UnknownFormatConversionException: java.util.UnknownFormatConversionException: Conversion = '/'

> at org.python.core.Py.JavaError(Py.java:495)  
> at org.python.core.Py.JavaError(Py.java:488)  
> at org.python.core.PyReflectedFunction. **call** (PyReflectedFunction.java:188)  
> at org.python.core.PyReflectedFunction. **call** (PyReflectedFunction.java:204)  
> at org.python.core.PyObject. **call** (PyObject.java:404)  
> at org.python.core.PyObject. **call** (PyObject.java:408)  
> at org.python.core.PyMethod. **call** (PyMethod.java:124)  
> at org.python.pycode.\_pyx325.f$0(event:propertyChange:87)  
> at org.python.pycode.\_pyx325.call\_function(event:propertyChange)  
> at org.python.core.PyTableCode.call(PyTableCode.java:165)  
> at org.python.core.PyCode.call(PyCode.java:18)  
> at org.python.core.Py.runCode(Py.java:1275)  
> at com.inductiveautomation.ignition.common.script.ScriptManager.runCode(ScriptManager.java:634)  
> at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.runActions(ActionAdapter.java:180)  
> at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.access$000(ActionAdapter.java:40)  
> at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter$ActionRunner.run(ActionAdapter.java:286)  
> at java.awt.event.InvocationEvent.dispatch(Unknown Source)  
> at java.awt.EventQueue.dispatchEventImpl(Unknown Source)  
> at java.awt.EventQueue.access$500(Unknown Source)  
> at java.awt.EventQueue$3.run(Unknown Source)  
> at java.awt.EventQueue$3.run(Unknown Source)  
> at java.security.AccessController.doPrivileged(Native Method)  
> at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)  
> at java.awt.EventQueue.dispatchEvent(Unknown Source)  
> at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)  
> at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)  
> at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)  
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)  
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)  
> at java.awt.EventDispatchThread.run(Unknown Source)  
> Caused by: java.util.UnknownFormatConversionException: Conversion = '/'  
> at java.util.Formatter.checkText(Unknown Source)  
> at java.util.Formatter.parse(Unknown Source)  
> at java.util.Formatter.format(Unknown Source)  
> at java.util.Formatter.format(Unknown Source)  
> at com.inductiveautomation.ignition.common.util.LoggerEx.createMessage(LoggerEx.java:194)  
> at com.inductiveautomation.ignition.common.util.LoggerEx.errorf(LoggerEx.java:313)  
> at com.inductiveautomation.ignition.common.util.LoggerEx.error(LoggerEx.java:469)  
> at sun.reflect.GeneratedMethodAccessor312.invoke(Unknown Source)  
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  
> at java.lang.reflect.Method.invoke(Unknown Source)  
> at org.python.core.PyReflectedFunction. **call** (PyReflectedFunction.java:186)  
> ... 27 more

> Ignition v7.9.5 (b2017111615)  
> Java: Oracle Corporation 1.8.0\_144

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 29, 2018, 7:45pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/8 "2018-01-29T19:45:06Z")

</div>

The workaround is to switch to `.infof()`, with a `"%s"` argument ahead of the string you tried to log with `.info()`.

---

<div class="post-metadata">

**Author:** ![Clayton.Balfour](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/clayton.balfour/32/3937_2.png) [@Clayton.Balfour](https://forum.inductiveautomation.com/u/Clayton.Balfour)\
**Post date:** [January 29, 2018, 8:03pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/9 "2018-01-29T20:03:59Z")

</div>

Thanks for the tip, but I think I am still missing something.

This is what I had before:  
logger.info(url)

This is what I changed it to:  
logger.infof("%s" %url)

But I am still getting the same error:  
java.util.UnknownFormatConversionException: Conversion = ‘O’

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 29, 2018, 8:04pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/10 "2018-01-29T20:04:50Z")

</div>

use

```auto
logger.infof("%s", url)

```

---

<div class="post-metadata">

**Author:** ![Clayton.Balfour](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/clayton.balfour/32/3937_2.png) [@Clayton.Balfour](https://forum.inductiveautomation.com/u/Clayton.Balfour)\
**Post date:** [January 29, 2018, 8:43pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/11 "2018-01-29T20:43:30Z")

</div>

Ah perfect, thank you, it is working now.

I am still planning to wait for 7.9.6 since this is used throughout our application. It doesn’t make sense to me to go through and implement the work around, but I am glad to confirm it is the same issue. Any update on a 7.9.6 timeline would be appreciated 🙂

---

<div class="post-metadata">

**Author:** ![KathyApplebaum](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kathyapplebaum/32/7261_2.png) [@KathyApplebaum](https://forum.inductiveautomation.com/u/KathyApplebaum)\
**Post date:** [January 29, 2018, 8:53pm UTC](https://forum.inductiveautomation.com/t/system-util-getlogger-and-the-info-method/16693/12 "2018-01-29T20:53:46Z")

</div>

The release candidate has been out for a while at [https://inductiveautomation.com/downloads/beta](https://inductiveautomation.com/downloads/beta), so you can download that and check that it solves your issue. Final should be very soon.
