Atlas91
Atlas91

Reputation: 5904

Unable to open log device '/dev/log/main': No such file or directory on my Nexus 4

As you can see my problem is : Unable to open log device '/dev/log/main': No such file or directory . The application i'm writing i'm testing on my nexus 4. How can i resolve the problem?

Upvotes: 2

Views: 4233

Answers (3)

Ionuț Gorgos
Ionuț Gorgos

Reputation: 61

Dialing that phone number doesn't solve the problem.

Open a new command line (cmd) and write adb shell insmod /system/lib/modules/logger.ko

That it will solve the problem. (Samsung Galaxy i9070).

Upvotes: 0

Jorgesys
Jorgesys

Reputation: 126523

I found this:

There is a hidden service-menu where you can set loggin up. The service-menu is started by "dialing" this phone number: *#*#2846579#*#*

it worked for me.

http://www.android-ios-tutorials.com/155/logcat-doesnt-show-messages-error-unable-to-open-log-device/

Upvotes: 2

reor
reor

Reputation: 830

In Jelly Bean Google prevented arbitrary apps from accessing the system/app logs so unless your device is rooted you won't be able to access the log file, either.

See http://commonsware.com/blog/2012/07/12/read-logs-regression.html.

In order to allow on-device access of logs I created a Logger class that I use for all my debug logs. It basically wraps android.util.Log, outputting all the Logger.d calls to Log.d and to a file in the root directory. It doesn't yet output all the information contained in the Android logs, but you can edit it to put whatever info you'd like in there. Don't forget to go clear the file every once in a while... (: Here it is:

package com.example.app;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.os.Environment;
import android.util.Log;

public class Logger
{

    private static final String LOGTAG = "Logger";

    // Set to false to remove creation of local file
    private static final boolean IS_DEBUG_MODE = true;

    private static final SimpleDateFormat mSDF = new SimpleDateFormat( "MM-dd hh:mm:ss.SSS" );

    public Logger() {

    }

    public static void d( String tag, String msg ) {
        Log.d( tag, msg );

        writeToFile( tag, msg );
    }

    public static void d( String tag, String msg, Throwable th ) {
        Log.d( tag, msg, th );

        writeToFile( tag, msg, th );
    }

    private static void writeToFile( String tag, String msg ) {

        if( IS_DEBUG_MODE ) {
            File root = Environment.getExternalStorageDirectory();
            File file = new File( root, "appLog.txt" );

            try {
                if( root.canWrite() ) {
                    FileWriter fileWriter = new FileWriter( file, true );
                    BufferedWriter out = new BufferedWriter( fileWriter );

                    Date d = new Date();

                    out.write( mSDF.format( d ) + ": " + tag + " : " + msg );
                    out.newLine();
                    out.close();
                }
            } catch( IOException e ) {
                Log.d( LOGTAG, "Couldn't write file: " + e.getMessage() );
            }
        }
    }

    private static void writeToFile( String tag, String msg, Throwable th ) {
        writeToFile( tag, msg + ", e: " + th.getMessage() );
    }

}

Upvotes: 2

Related Questions