# View the wrapper.log File in a Client or Designer

**URL:** <https://forum.inductiveautomation.com/t/view-the-wrapper-log-file-in-a-client-or-designer/10156>\
**Category:** Ignition\
**Created:** [June 22, 2015, 4:47pm UTC](https://forum.inductiveautomation.com/t/view-the-wrapper-log-file-in-a-client-or-designer/10156 "2015-06-22T16:47:44Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![nmudge](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nmudge/32/3394_2.png) [@nmudge](https://forum.inductiveautomation.com/u/nmudge)\
**Post date:** [June 22, 2015, 4:47pm UTC](https://forum.inductiveautomation.com/t/view-the-wrapper-log-file-in-a-client-or-designer/10156/1 "2015-06-22T16:47:44Z")

</div>

The Perfect Abstractions development team recently released an Ignition project that enables people to easily see the wrapper.log file in a client or designer.

This project solves the problem of not having remote access to an Ignition server in order to view the wrapper.log file. But even with remote access to an Ignition server, this project makes it easier to access and view the wrapper.log file.

More information about the project is available in this blog post: [View the Ignition wrapper.log File in the Designer or Client](http://nickmudge.info/post/view-the-ignition-wrapper.log-file-in-the-designer-or-client)

Here’s the project. Download it and import/upload it into Ignition to install it: [WrapperLogViewer.proj](http://nickmudge.info/download/WrapperLogViewer.proj)

Information about what the wrapper.log file is and why it is useful is here: [What is the Ignition wrapper.log File and Why it is Useful?](http://nickmudge.info/post/what-is-the-ignition-wrapper.log-file-and-why-it-is-useful)

Here’s a screenshot of the WrapperLogViewer project:

 ![](https://us1.discourse-cdn.com/inductiveautomation/original/2X/a/a9fabcb9b4fd6ff5f917bdcd1033b356c3efba1f.png)

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [June 22, 2015, 5:06pm UTC](https://forum.inductiveautomation.com/t/view-the-wrapper-log-file-in-a-client-or-designer/10156/2 "2015-06-22T17:06:46Z")

</div>

One caveat is that that importing the script will overwrite whatever you may already have in the project (Nick had warned me of it, and I think it’s mentioned in his blog post. But it is worth a re-mention 😉).

I imported into a standalone project. From there, I can copy/paste as needed. ![:thumb_left:](https://us1.discourse-cdn.com/inductiveautomation/original/1X/e26afb081ddde6df016df6ee49159cf56aaca688.gif ":thumb\_left:")

---

<div class="post-metadata">

**Author:** ![nmudge](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nmudge/32/3394_2.png) [@nmudge](https://forum.inductiveautomation.com/u/nmudge)\
**Post date:** [June 22, 2015, 5:27pm UTC](https://forum.inductiveautomation.com/t/view-the-wrapper-log-file-in-a-client-or-designer/10156/3 "2015-06-22T17:27:11Z")

</div>

Good points from Jordan. ![:thumb_left:](https://us1.discourse-cdn.com/inductiveautomation/original/1X/e26afb081ddde6df016df6ee49159cf56aaca688.gif ":thumb\_left:")

Uploading/importing the WrapperLogViewer.proj as a standalone project and then copy/paste the wrapper.log viewer window into other projects is a good idea.

---

<div class="post-metadata">

**Author:** ![lachguerabdallah](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lachguerabdallah/32/25558_2.png) [@lachguerabdallah](https://forum.inductiveautomation.com/u/lachguerabdallah)\
**Post date:** [March 11, 2021, 3:39pm UTC](https://forum.inductiveautomation.com/t/view-the-wrapper-log-file-in-a-client-or-designer/10156/4 "2021-03-11T15:39:20Z")

</div>

Hello, the project is not available, can you upload it here? Thank you

---

<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:** [March 11, 2021, 3:40pm UTC](https://forum.inductiveautomation.com/t/view-the-wrapper-log-file-in-a-client-or-designer/10156/5 "2021-03-11T15:40:16Z")

</div>

Nick doesn’t do Ignition any more.

---

<div class="post-metadata">

**Author:** ![lachguerabdallah](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lachguerabdallah/32/25558_2.png) [@lachguerabdallah](https://forum.inductiveautomation.com/u/lachguerabdallah)\
**Post date:** [March 11, 2021, 3:44pm UTC](https://forum.inductiveautomation.com/t/view-the-wrapper-log-file-in-a-client-or-designer/10156/6 "2021-03-11T15:44:29Z")

</div>

@JordanCClark share the project 😆 😆

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [March 11, 2021, 5:34pm UTC](https://forum.inductiveautomation.com/t/view-the-wrapper-log-file-in-a-client-or-designer/10156/7 "2021-03-11T17:34:47Z")

</div>

I didn’t even hear the horn before I was tossed under the bus. 😏

This is the (slightly modified for v8) script that the project was based on. Adjust file and tag paths accordingly. It writes to a string tag and a date tag.

```auto
import os
import datetime
import sys

path = "/usr/local/bin/ignition/logs/wrapper.log"
tagPaths = ["WrapperLog/LogContent", "WrapperLog/LastModified"]
t = os.path.getmtime(path)
modified = datetime.datetime.fromtimestamp(t)

lastModified = system.tag.readBlocking([tagPaths[1]])[0]
if lastModified.value == None:
	from java.util import Date
	lastModified.value = Date(0)
	
def datetimeToJavaDate(value):
	from java.util import Calendar, GregorianCalendar
	cal = GregorianCalendar(value.year, value.month - 1, value.day, 
		value.hour, value.minute, value.second)
	cal.set (Calendar.MILLISECOND, value.microsecond / 1000)
	return cal.getTime()
	
if lastModified.value.before(datetimeToJavaDate(modified)):
	content = system.file.readFileAsString(path)
	if len(content) > 64000:
		content = content[-64000:]
	system.tag.writeBlocking(tagPaths, [content, modified])

```

---

<div class="post-metadata">

**Author:** ![zxcslo](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/zxcslo/32/61610_2.png) [@zxcslo](https://forum.inductiveautomation.com/u/zxcslo)\
**Post date:** [March 11, 2021, 5:55pm UTC](https://forum.inductiveautomation.com/t/view-the-wrapper-log-file-in-a-client-or-designer/10156/8 "2021-03-11T17:55:19Z")

</div>

This is the original project from @nmudge…  
[WrapperLogViewer.proj](https://forum.inductiveautomation.com/uploads/short-url/wdaB6by3HnWlWSSxUV8CvWDkTwQ.proj) (23.7 KB)
