# file /var/log/messages: data ;falscher Dateityp, Anzeige=Hex

## Randy Andy

Hallo Leute.

Seit einiger Zeit zeigt mir less die Datei  /var/log/messages immer in der Hex-Darstellung an.

Wieso, hat er doch früher nie gemacht?

Kann man die Anzeige im less irgendwie umstellen, ha ich versehentlich irgendeine Tastenkombination erwischt - unwahrscheinlich, die Hilfe sagt mir eher nein.

more zeigt's mir richtig an, aber less ist ja bekanntlich more, daher möchte ich lieber wieder less nutzen - verwirrend das, ich weiß, aber ich denke ihr wisst schon was ich meine.

```
file /var/log/messages zeigt:

/var/log/messages: data
```

Insofern würde ich eigentlich sagen dass less alles richtig macht und more es falsch zeigt, trotzdem wäre mir die Textdarstellung lieber.

Lösche ich messages, so wird es wieder neu mit gleichem datentyp angelegt.

Kann ich den irgendwie ändern, Stichwort magic? Hab zwar dessen Erwähnung in meinem Linux-Kompendium gefunden, aber nichts wie man das beeinflussen kann. 

Oder legt das Logging den Datentyp falsch an, und das ist alles?

Ausser vielleicht irgendwelcher Einträge in (/etc/magic gibt's bei mir nicht) in /usr/share/mime/magic?

Aber das kann's doch nicht sein und warum ging's denn vorher.

Downgrade auf verschiedene less Versionen brachte auch nix.

Wieso interpretiert more das anders als less? Fragen über Fragen - bin verwirrt und ahnungslos, mir Fehlen anscheinend wichtige Basics.

Bitte um Erleuchtung - Ommhh....  und mein Dank wird Euch auf Ewig nachlaufen   :Laughing: 

Andy.

----------

## disi

Guck mal hier:

https://forums.gentoo.org/viewtopic-t-929738.html

Ich habe einfach ein

```
export LESSOPEN="%s"
```

In meine .zshrc gepackt

----------

## Randy Andy

Danke disi,

für den interessanten Hinweis, mal sehen was ich damit mache.

Ist ja eigentlich nur ein Workaround, aber nicht die Lösung der Ursache.

Daher würde ich den Thread gerne offen lassen, vielleicht hilft's ja.

Übrigens, ich verwende auch syslog-ng. 

Liegt's an ihm, da er die Logs so schreibt dass sie von file als data erkannt werden.

Mit Dateien die als text ausgewiesen werden macht less ja alles richtig, wie z. B. /var/log/emerge.log

Gruß, Andy.

----------

## toralf

 *Randy Andy wrote:*   

> 
> 
> Liegt's an ihm, da er die Logs so schreibt dass sie von file als data erkannt werden

 Nö, ich tippe mal darauf, daß irgendeine Kernel-Message non-printable characters ausgespuckt hat und nun die Logik von "file" fehlschlägt.

Wenn Du logrotate oder dgl. benutzt, sollte eine neue syslog-Datei dann wieder auch als Nur-Text erkannt werden.

----------

## Randy Andy

Toralf,

in meinem ersten post habe ich doch geschrieben, dass ich das bereits versucht hatte:

 *Quote:*   

> Lösche ich messages, so wird es wieder neu mit gleichem datentyp angelegt. 

 

Gestern kam übrigens eine neue Version von less in den tree, das änderte ab auch nichts an dem Verhalten - was zu erwarten war.

Trotzdem habe ich noch einmal die messages Datei gelöscht und siehe da, für kurze Zeit erkannte sie file als ASCII Dateityp und solange wird sie dann auch von less korrekt angezeigt.

Ich habe die Vermutung dass erst nach einem reboot, wenn die Kernel-Meldungen geloggt werden, besagte "non-printable characters" auftauchen und somit der datentyp wieder auf data wechselt.

Hab auch schon eine Idee woran das liegen könnte, brauch nur noch etwas Zeit um dem nachzugehen, aber falls das einer von Euch vorab testen möchte, hier meine Idee:

Entweder liegt es an den nls (native language support) settings des kernels, oder aber die locale settings spielen hier mit hinein.

@disi

Du hast ja das gleiche Problem (gehabt/gefixed durch workaround mit lesspipe).

Vielleicht wollen wir mal unsere Settings vergleichen bzw. hier posten. 

Ich vermute nun, dass nur nicht native en user, mit abweichenden locale settings davon betroffen sind, also die mit Mischsystemen zwischen UTF8 (16byte/Zeichen) und anderen Zeichensätzen (8Byte/Zeichen), so wie z.B. im Localization Wiki beschrieben. 

Vielleicht werden dadurch quasi "non-printable characters" erzeugt, die dann beim Logging weggeschrieben werden.

Wir werden sehen ob an meiner These was dran ist...

Informellen Gruß, Andy.

----------

## disi

Also als LANG habe ich 'en_GB.UTF-8' (nicht die default 'en_US.UTF-8')

Eingestellt in /etc/locale.gen und ein locale-gen laufen lassen.

Dann 'eselect locale' und 'en_GB.UTF-8' gewaehlt, was es in /etc/env.d/02locale schreibt.

Da ist aber noch eine 'LC_ALL' gesetzt, meine ich, die auf 'C' verbleibt, sprich das Programm waehlt selbst welche locale es benutzen moechte.

Muesste nomma gucken Zuhause...

----------

## bell

Versucht es mal mit

```
cat /var/log/messages | less
```

 Damit wird das Log als Text dargestellt und die nicht druckbaren Sonderzeichen als "^X" weiss hervorgehoben.

Was ist der Fehler?

----------

## platinumviper

Sieht die Datei denn irgendwie seltsam aus, wenn du sie mit vim o.ä. öffnest?

----------

## Randy Andy

Hi Leute,

Interessanter Weise zeigt nicht jeder Editor diese Zeichen an.

Less und more zeigen sie mir nicht, der Viewer (F3) des Midnight Commanders zeigt sie als ...Punktchen, aber im Editor Modus (F4) werden sie als @ angezeigt.

Vim zeigt mir das korrekt an, so sehen die relevanten Zeichen/Zeilen vollständig aus:

 *Quote:*   

> 
> 
> Jul 17 16:45:19 big-server syslog-ng[2109]: syslog-ng starting up; version='3.3.5'
> 
> Jul 17 16:45:19 ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ kernel: [    0.000000] Initializing cgroup subsys cpu
> ...

 

Löscht man alle ^@ Zeichen aus der messages, so ändert sich der Datentyp von data auf ASCII und less zeigt's wieder richtig an.

Die Ursache hat aber doch nix mit den nls oder der localen zu tun. 

Es liegt wohl doch an der syslog-ng -version. Genauer gesagt am threading patch.

Ist das threading aktiv in der syslog-ng.conf, dann schreibt der logger diese komischen Zeichen in die messages.

Das passiert übrigens nur nach dem booten.

Verwendet man die alte syslog-ng.conf ohne threading, dann wird wieder ohne seltsame Zeichen geloggt.

Vermutlich würde auch ein downgrade auf ältere Versionen helfen, aber so geht's auch erst mal, bis eine richtige Abhilfe da ist.

Hab schon mal eine  Bug-Report geschrieben und siehe da, einer kannte die Zeichen auch schon...

https://bugs.gentoo.org/show_bug.cgi?id=406623

Gruß, Andy.

[edit, nachdem zu Hause am vernünftigen OS, konnte ich die relevanten Zeichen hinzufügen.

Interessant wie sich die Darstellung dieses posts dadurch verändert, naja, solange ihr dabei nicht less verwendet   :Wink:  ]

----------

