小编Dan*_*ord的帖子

GCMRegistrar.getRegistrationId(this)总是返回空字符串,即使在成功调用register之后也是如此

我正在实现GCM - 我做的第一件事是调用GCMRegistrar.getRegistrationId来查看设备是否已注册.它不是(返回空字符串),所以我对GCMRegistrar.register进行异步调用.正如所料,我的意图服务(从GCMBaseIntentService派生)获取其调用的onRegistered()方法,以及我的服务器可用于向此设备发送GCM消息的令牌.到现在为止还挺好.

但是,下次运行应用程序时,我希望首先调用GCMRegistrar.getRegistrationId来返回我在intent服务的onRegistered函数中返回的令牌.但我又得到了空字符串.我认为GCM客户端库(gcm.jar)会将GCM注册ID(令牌)保存到私有SharedPreferences对象 - 事实上,GCMRegistrar类的文档(http://developer.android.com/guide/ google/gcm/client -javadoc/com/google/android/gcm/GCMRegistrar.html)声明"注意:此类使用私有SharedPreferences对象来跟踪注册令牌"

我没有取消注册设备,卸载应用程序或更新了versionCode.我缺少什么想法?谢谢

注意 - 此问题已在android-gcm标记下的google组中发布.网址在这里:

https://groups.google.com/forum/#!topic/android-gcm/4FPqZLzlvE4

Mark Murphy(一个Commons Guy)对这个问题的初步诊断非常有帮助,但没有任何具体的问题浮出水面

更新编辑 - 这是我的AndroidManifest.xml的相关部分

    <receiver android:name=".push.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="com.myapp.package.name" />
        </intent-filter>
    </receiver>

    <service android:name=".push.GCMIntentService" />
Run Code Online (Sandbox Code Playgroud)

android google-cloud-messaging

12
推荐指数
1
解决办法
4190
查看次数

为什么我的gunicorn进程忽略了Django的日志级别设置?

我有Nginx,Gunicorn和Django都运行在同一个Ubuntu EC2实例上.我有一个相当传统的设置,并希望将所有gunicorn错误记录到特定文件.

我对Gunicorn的配置是:

#!/bin/bash

NAME="server"
GUNICORNDIR=/ebs/env/bin
DJANGODIR=/ebs/server/
SOCKFILE=/tmp/gunicorn.sock
LOGFILE=/var/log/gunicorn/gunicorn.error
USER=ubuntu
GROUP=ubuntu
NUM_WORKERS=5
TIMEOUT=60
DJANGO_SETTINGS_MODULE=settings
DJANGO_WSGI_MODULE=wsgi

echo "Starting $NAME"

RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

exec $GUNICORNDIR/gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --workers $NUM_WORKERS \
  --timeout=$TIMEOUT \
  --user=$USER --group=$GROUP \
  --log-level=error --log-file=$LOGFILE \
  --bind=unix:$SOCKFILE
Run Code Online (Sandbox Code Playgroud)

但是,使用此配置,我将从DEBUG及以上的所有日志写入文件.我的日志级参数似乎被忽略了.

我要找的是只写这些类型的日志消息:

2014-01-02 13:54:53 [3327] [CRITICAL] WORKER TIMEOUT (pid:3338)
2014-01-02 13:54:53 [3327] [CRITICAL] WORKER TIMEOUT (pid:3338)
Run Code Online (Sandbox Code Playgroud)

我认为我的settings.py中指定的Django日志记录配置可能会干扰,所以我添加了一个处理程序和一个记录器来尝试并定位gunicorn,但这不起作用.

'handlers': {
'gunicorn': {
    'level': 'ERROR',
    'class': 'logging.handlers.RotatingFileHandler',
    'formatter': 'verbose',
    'filename': '/ebs/log/gunicorn.error',
    'maxBytes': 1024 * 1024 * …
Run Code Online (Sandbox Code Playgroud)

python django logging nginx gunicorn

6
推荐指数
1
解决办法
1万
查看次数