本文整理汇总了Golang中appengine.Context.Warningf方法的典型用法代码示例。如果您正苦于以下问题:Golang Context.Warningf方法的具体用法?Golang Context.Warningf怎么用?Golang Context.Warningf使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类appengine.Context
的用法示例。
在下文中一共展示了Context.Warningf方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: AppEngineLogHandler
// AppEngineLogHandler sends logs to AppEngine.
// The record must contain the appengine request context.
func AppEngineLogHandler() log15.Handler {
logFormat := log15.JsonFormat()
return log15.FuncHandler(func(r *log15.Record) error {
var c appengine.Context
index := 0
for i, e := range r.Ctx {
if ct, ok := e.(appengine.Context); ok {
c = ct
index = i
break
}
}
if c == nil {
// not in the context of a request
return nil
}
r.Ctx = append(r.Ctx[:index-1], r.Ctx[index+1:]...)
log := string(logFormat.Format(r))
switch r.Lvl {
case log15.LvlCrit:
c.Criticalf(log)
case log15.LvlError:
c.Errorf(log)
case log15.LvlWarn:
c.Warningf(log)
case log15.LvlInfo:
c.Infof(log)
case log15.LvlDebug:
c.Debugf(log)
}
return nil
})
}
示例2: webuserOK
func webuserOK(c appengine.Context, w http.ResponseWriter, r *http.Request) bool {
if !userauthenticated(c) {
url, err := user.LoginURL(c, r.URL.String())
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return false
}
w.Header().Set("Location", url)
w.WriteHeader(http.StatusFound)
return false
}
u := user.Current(c)
authzed, err := userauthorized(c, u.Email)
if err != nil {
c.Errorf("authorization error: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return false
}
if !authzed {
c.Warningf("authorization failure: %v", u.Email)
w.WriteHeader(http.StatusForbidden)
err = templates.ExecuteTemplate(w, "unauthorized.html", nil)
if err != nil {
c.Errorf("unauthorized user and got err on template: %v", err)
}
return false
}
return true
}
示例3: getCached
func getCached(c appengine.Context, key string, missing func(appengine.Context, string) (*bytes.Buffer, error)) (*memcache.Item, error) {
item, err := memcache.Get(c, key)
if err == memcache.ErrCacheMiss {
c.Infof("item not in the cache: %v", key)
result, err := missing(c, key)
if err != nil {
return nil, err
}
item = &memcache.Item{
Key: key,
Value: result.Bytes(),
}
if err := memcache.Add(c, item); err == memcache.ErrNotStored {
c.Warningf("item with key %q already exists", item.Key)
} else if err != nil {
return item, err
}
} else if err != nil {
return item, err
} else {
c.Infof("Cache hit: %v", key)
}
return item, nil
}
示例4: CacheAccount
// CacheAccount puts the specified Account into the cache (memcache).
func CacheAccount(c appengine.Context, acc *ds.Account) {
mk := prefixAccForUID + acc.UserID
if err := memcache.Set(c, &memcache.Item{Key: mk, Value: acc.Encode(), Expiration: cachedAccExpiration}); err != nil {
c.Warningf("Failed to set %s in memcache: %v", mk, err)
}
}
示例5: runFunc
func runFunc(c appengine.Context, w http.ResponseWriter, req *http.Request) {
defer req.Body.Close()
var inv invocation
if err := gob.NewDecoder(req.Body).Decode(&inv); err != nil {
c.Errorf("delay: failed decoding task payload: %v", err)
c.Warningf("delay: dropping task")
return
}
f := funcs[inv.Key]
if f == nil {
c.Errorf("delay: no func with key %q found", inv.Key)
c.Warningf("delay: dropping task")
return
}
// TODO: This is broken for variadic functions.
ft := f.fv.Type()
in := make([]reflect.Value, ft.NumIn())
in[0] = reflect.ValueOf(c)
for i := 1; i < len(in); i++ {
in[i] = reflect.ValueOf(inv.Args[i-1])
}
out := f.fv.Call(in)
if n := ft.NumOut(); n > 0 && ft.Out(n-1) == osErrorType {
if errv := out[n-1]; !errv.IsNil() {
c.Errorf("delay: func failed (will retry): %v", errv.Interface())
w.WriteHeader(http.StatusInternalServerError)
return
}
}
}
示例6: CacheDevice
// CacheDevice puts the specified Device into the cache (memcache).
func CacheDevice(c appengine.Context, dev *ds.Device) {
mk := prefixDevForRandID + dev.RandID
if err := memcache.Set(c, &memcache.Item{Key: mk, Value: dev.Encode()}); err != nil {
c.Warningf("Failed to set %s in memcache: %v", mk, err)
}
}
示例7: ClearDeviceForRandID
// ClearDeviceForRandID clears the cached Device for the specified RandID.
func ClearDeviceForRandID(c appengine.Context, RandID string) {
mk := prefixDevForRandID + RandID
if err := memcache.Delete(c, mk); err != nil {
c.Warningf("Failed to delete %s from memcache: %v", mk, err)
}
}
示例8: locateFavIconURL
// locateFavIconURL attempts to determine the "favicon" URL for a particular
// site URL. It does this by checking the source document for explicit icon
// directives (in the LINK tags), as well as by attempting to fetch favicon.ico
func locateFavIconURL(context appengine.Context, feedHomeURL string) (string, error) {
if feedHomeURL != "" {
// Attempt to extract the favicon from the source document
if favIconURL, err := extractFavIconURL(context, feedHomeURL); err != nil {
context.Warningf("FavIcon extraction failed for %s: %s", feedHomeURL, err)
} else if favIconURL != "" {
if contains, err := containsFavIcon(context, favIconURL); err != nil {
context.Warningf("FavIcon lookup failed for %s: %s", feedHomeURL, err)
} else if contains {
return favIconURL, nil
}
}
// If that fails, try the usual location (/favicon.ico)
if url, err := url.Parse(feedHomeURL); err != nil {
return "", err
} else {
attemptURL := fmt.Sprintf("%s://%s/favicon.ico", url.Scheme, url.Host)
if contains, err := containsFavIcon(context, attemptURL); err != nil {
return "", err
} else if contains {
return attemptURL, nil
}
}
}
return "", nil
}
示例9: EditBlogCube
func EditBlogCube(model *M.BlogCube, c appengine.Context) (err error) {
key, entity := dsHelper.Model2Entity(model)
blogCubeEntity := entity.(M.BlogCubeEntity)
c.Warningf("The entity is %v", blogCubeEntity)
_, err = datastore.Put(c, key, &blogCubeEntity)
return err
}
示例10: Log
// Log is a helper function that logs the given message to appenging
// with the given priority. Accepted priorities are "debug", "info",
// "warn", "error", and "crit". Other values default to "error".
func Log(c appengine.Context, r *http.Request, priority string,
message string, params ...interface{}) {
message = fmt.Sprintf("[%s] [%s] [%s]: %s", r.RemoteAddr, r.Method,
r.URL, message)
switch priority {
case "debug":
c.Debugf(message, params...)
case "info":
c.Infof(message, params...)
case "warn":
c.Warningf(message, params...)
case "error":
c.Errorf(message, params...)
case "crit":
c.Criticalf(message, params...)
default:
c.Errorf(message, params...)
}
}
示例11: TriggerBatchProcessing
func TriggerBatchProcessing(c appengine.Context, article ArticleId) error {
// Instead of submitting a task to match incoming bids, resulting in one task per bid,
// we collect bids for up to two seconds and batch-process them afterwards.
semaphoreKey := "semaphore-" + string(article)
if semaphore, err := memcache.Increment(c, semaphoreKey, 1, 0); err != nil {
return err
} else if semaphore >= 2 {
c.Infof("Batch processing already triggered for article %v", article)
memcache.IncrementExisting(c, semaphoreKey, -1)
return nil
} else {
time.Sleep(1 * time.Second)
c.Infof("Starting batch processing...")
memcache.IncrementExisting(c, semaphoreKey, -1)
time_before := time.Now()
matchingErr := MatchIncomingBids(c, article)
time_after := time.Now()
duration := time_after.Sub(time_before)
if duration > 1000*time.Millisecond {
c.Errorf("Batch processing finished after %v. Limit exceeded!", duration)
} else if duration > 500*time.Millisecond {
c.Warningf("Batch processing finished after %v. Limit in danger.", duration)
} else {
c.Infof("Batch processing finished after %v.", duration)
}
return matchingErr
}
}
示例12: storeStatsObject
func storeStatsObject(c appengine.Context, st Stats, uuid string) error {
cherr := make(chan error)
oldSize := len(st.Data)
if err := st.compress(); err != nil {
return err
}
c.Infof("Compressed stat data from %v -> %v", oldSize, len(st.Data))
k, err := datastore.Put(c,
datastore.NewIncompleteKey(c, "Stats", nil), &st)
if err != nil {
c.Warningf("Error storing stats item: %v", err)
return err
}
go func() {
err := couchit(c, k, nil)
if err != nil {
c.Errorf("Error queuing store of stats item: %v", err)
}
cherr <- err
}()
go func() {
err := updateUnique(c, k, uuid)
if err != nil {
c.Errorf("Error queueing update unique: %v", err)
}
cherr <- err
}()
return anyErr(<-cherr, <-cherr)
}
示例13: ParseFeed
func ParseFeed(c appengine.Context, contentType, origUrl, fetchUrl string, body []byte) (*Feed, []*Story, error) {
cr := defaultCharsetReader
if !bytes.EqualFold(body[:len(xml.Header)], []byte(xml.Header)) {
enc, err := encodingReader(body, contentType)
if err != nil {
return nil, nil, err
}
if enc != encoding.Nop {
cr = nilCharsetReader
body, err = ioutil.ReadAll(transform.NewReader(bytes.NewReader(body), enc.NewDecoder()))
if err != nil {
return nil, nil, err
}
}
}
var feed *Feed
var stories []*Story
var atomerr, rsserr, rdferr error
feed, stories, atomerr = parseAtom(c, body, cr)
if feed == nil {
feed, stories, rsserr = parseRSS(c, body, cr)
}
if feed == nil {
feed, stories, rdferr = parseRDF(c, body, cr)
}
if feed == nil {
c.Warningf("atom parse error: %s", atomerr.Error())
c.Warningf("xml parse error: %s", rsserr.Error())
c.Warningf("rdf parse error: %s", rdferr.Error())
return nil, nil, fmt.Errorf("Could not parse feed data")
}
feed.Url = origUrl
return parseFix(c, feed, stories, fetchUrl)
}
示例14: AddBlogCube
func AddBlogCube(model *M.BlogCube, c appengine.Context) (err error) {
c.Warningf("addBlogCube function")
entity := &(M.BlogCubeEntity{})
entity.BlogName = model.BlogName
entityName := "BlogCubeEntity"
_, err = datastore.Put(c, datastore.NewIncompleteKey(c, entityName, nil), entity)
return err
}
示例15: DSKeyID
func (appUser *AppUser) DSKeyID(c appengine.Context) (string, error) {
if appUser.ID == "" {
c.Warningf("Attempted to create an AppUser entity key with no ID!")
return "", errors.New("AppUser has no ID!")
}
return "user:" + appUser.ID, nil
}