cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
0 Kudos

Cut extremely long log messages and show only parts from start and end like alert window does

What inspired this wish list request? 

Making JMP log take almost all of my memory as JMP wanted to print list of 20 million items to log due to error in my code. And then if don't remember that you have to se Clear Log() instead of the faster Ctrl + A + Delete to clear the log, it is better just force close JMP.

 

JMP is also able to make log much shorter in some cases such as Get Session Script() but it just prints "..." and generally it isn't really useful (is session script really just ... or just long string of text jmp didn't want to print (latter in this case)).

jthi_1-1722316767933.png

JMP should still print to log, show at least start and end of the log AND keep the log for single print small enough to not cause lockup.

 

What is the improvement you would like to see? 

I would like JMP log to be smarter when user by accident, alert is shown OR on purpose prints long text to log (matrices, lists, rarely expressions). Alert is able to add "scissors" and show only start and end of the log message. Log window could show more than alert window but still not excessive amounts UNLESS user specifies that they wish to see everything -> there should also be a way to view the whole log (maybe save it to temp file which user could open?).

 

This example doesn't yet create impossible long log message. You can create longer by adding few zeros to the table initialization but I wouldn't suggest it.

 

Names Default To Here(1);

dt = New Table("Test",
	Add Rows(1000000),
	New Column("Row", Numeric, Ordinal, Formula(Row())),
	Invisible
);

dt << New Column("Str", Character, Nominal, Set Each Value(
	Repeat(Hex(:Row), 2)
));

/*
// Don't make the mistake of running this line as it will print excessively long list to log
dt[0, "Str"];
*/


m = dt[0, "Str"]; // List( 100000 elements ) assigned.

/*
Loc(Is Missing(dt[0, "Str"])); // prints' everything to log, but alert has just part of it
*/

/*
wait(0);
l = 0;
For Each({line}, Get Log(),
	l = l + Length(line);
);
show(l);
*/

Alert window with the scissors

 

 

 

jthi_0-1722316367211.png

and I get to my log 3 000 972 characters of text.

 

Why is this idea important? 

Prevents JMP from locking when you have long log messages which can be printed by accident, due to errors or on purpose.

1 Comment
Status changed to: Acknowledged