Java compiler cannot find "write"

User avatar
seal58
Posts: 351
Joined: Fri Jul 12, 2019 5:28 pm
Location: Rostock, Germany
Contact:

Re: Java compiler cannot find "write"

Post by seal58 »

Hi Terry,

you're right. I already use such liners to divide log blocks. That will do it for the moment too. I wanna finish my module first. May be that I'll continue working on the logger problem anytime.

Cheers

Roland
UrbanCyborg
Posts: 588
Joined: Mon Nov 15, 2021 9:23 pm

Re: Java compiler cannot find "write"

Post by UrbanCyborg »

Roland, I've dug into things a bit more deeply. The properties for the loggers are under the control of a unique, system-level LogManager object, and apparently, any changes to log formatting have to go through it. The possibly easier route would be to create or modify the property file in <Java>\lib. My machine doesn't have one, so I couldn't check on the format; I only know that it's in something called LoggingProperties format. If you look up the object in the docs, it'll give you a hint (but not much more) on how to get a reference to the single LogManager object. At this point, we've exceeded my meager knowledge of Java.

A couple of points on the code I posted. First, ignore the copyright; since I posted it for anyone to use, it doesn't make any sense. It was auto-generated by my editor template for Java modules. Second, change the object path to refer to your own company, not Cyberwerks. And third, change the log file path to a location that makes sense for your usage.

I hope something here is useful to you.

Reid
Cyberwerks Heavy Industries -- viewforum.php?f=76
User avatar
seal58
Posts: 351
Joined: Fri Jul 12, 2019 5:28 pm
Location: Rostock, Germany
Contact:

Re: Java compiler cannot find "write"

Post by seal58 »

Hi Reid,

I had a look at the files in Java lib folder. There I found just on properties file, which is related to character sets only.
In Java docs there is not any keyword LoggingProperties. But from class Logger I came to class LogManager and then to class Properties. That mass of information starts to get me fully confused.

Two things I believe to understand:

- Format of logged messages can be modified on several system levels. Basically there is a default. It can be overridden by logger classes, that are extended from Logger class and from specific logger handlers. In LogManager class there is a readConfiguration() method . That might could be used to configure log records. There's a lot of explanations with "but if ..., but if ... ". That exceeds my understanding at my actual Java beginner's level.

- Class Properties deals with configuration data basically, where pairs of strings are used for each parameter, one for parameter's name and the other for it's value. (therefore XML file format is usable too) As I remember, in another topic Terry mentioned to use "property save / load methods" in order to store extra information. And that is, what I'm actually working on to save module data within GetStateInformation(). But Properties might also be usable to write simple logs for testing purposes into a log file.

No I'm working on my rather simple module for two months day after day. And from one thing I get to next one and seem not getting forward. But you might have similiar problem, where I am the reason. :oops:

I appreciate your patience very much. So once more thank you for taking your time and offering your logger tool.

Roland
poetix
Posts: 54
Joined: Mon Nov 28, 2022 3:26 pm

Re: Java compiler cannot find "write"

Post by poetix »

seal58 wrote: Mon Feb 13, 2023 3:47 pm Java compiler tells me "cannot find symbol 'format' ", though he should. "format" is a property of SimpleFormatter. I tryed adding an import statement of various variants whithout getting it compiled.

Do you have any idea what I did wrong?
The example from the Javadocs is of a line in a file setting configuration properties of the logging system - it isn't a line of Java code, although it may look like one. The Java code to set a property on something will usually look something like "formatter.setFormat(...)", because fields of classes are usually hidden away behind "setter" methods and not accessible directly. (This is purely by convention, and you can write your own classes any way you like).

I think it's unlikely you're going to be able to tunnel upstream into the VM environment to change the behaviour of its logger. You're in a sandbox, you get certain things handed to you to play with (in this case via methods exposed on the VoltageModule object your module inherits from), and for the most part you don't get to see, much less tamper with, whatever's behind the curtain.

Running this in debug mode

Code: Select all

import java.util.logging.LogManager;

...

   @Override
   public void Initialize()
   {
      // add your own code here
      var e = LogManager.getLogManager().getLoggerNames();
      while (e.hasMoreElements()) {
         var s = e.nextElement();
         Log("Logger: " + s);
      }
   }
I observed that there is a logger called "global". You can get hold of it and try to set its log level, like so:

Code: Select all

      LogManager.getLogManager().getLogger("global").setLevel(java.util.logging.Level.INFO);
I suspect this is just the same as doing

Code: Select all

      Logger.getGlobal().setLevel(java.util.logging.Level.INFO);
Whether that will actually affect the output of calling Log I don't know. There isn't an obvious way to reconfigure the formatting of the logger or anything like that; and nor should there be, since a client of the logging system shouldn't really be able to modify its behaviour in a way that would affect other clients (although I don't know how thoroughly sandboxed a VM module actually is - there must be at least classloader-level separation from other modules or you'd get horrible clashes between different version of imported libraries, etc).
London, UK
Developer, Vulpus Labs
Musician, w/trem
User avatar
seal58
Posts: 351
Joined: Fri Jul 12, 2019 5:28 pm
Location: Rostock, Germany
Contact:

Re: Java compiler cannot find "write"

Post by seal58 »

Hi poetix,

your doubts in changing system defaults by any user are realizable. I also realized, that there are lots of things more importand than an unwanted date line in a log file. Additionally I'm just sticking in other Java problems, that I have to focus at first.

Thanks for coming back with your explanations. If I have further clear questions, I will surely ask this forum, at least because here are some really Java high level skilled people as you are.

Roland
Post Reply

Return to “Module Designer”