Index: libs/libmythtv/jobqueue.h
===================================================================
--- libs/libmythtv/jobqueue.h	(revision 7255)
+++ libs/libmythtv/jobqueue.h	(working copy)
@@ -175,6 +175,7 @@
     QString GetJobCommand(int jobType, ProgramInfo *tmpInfo);
 
     static void *TranscodeThread(void *param);
+    static QString PrettyPrint(off_t bytes);
     void DoTranscodeThread(void);
 
     static void *FlagCommercialsThread(void *param);
Index: libs/libmythtv/jobqueue.cpp
===================================================================
--- libs/libmythtv/jobqueue.cpp	(revision 7255)
+++ libs/libmythtv/jobqueue.cpp	(working copy)
@@ -1562,6 +1562,39 @@
     return NULL;
 }
 
+QString JobQueue::PrettyPrint(off_t bytes)
+{
+    // Pretty print "bytes" as KB, MB, GB, TB, etc., subject to the desired
+    // number of units
+    static const struct {
+        const char      *suffix;
+        unsigned int    max;
+        int         precision;
+    } pptab[] = {
+        { "bytes", 9999, 0 },
+        { "kB", 999, 0 },
+        { "MB", 999, 1 },
+        { "GB", 999, 1 },
+        { "TB", 999, 1 },
+        { "PB", 999, 1 },
+        { "EB", 999, 1 },
+        { "ZB", 999, 1 },
+        { "YB", 0, 0 },
+    };
+    unsigned int    ii;
+    float           fbytes = bytes;
+
+    ii = 0;
+    while (pptab[ii].max && fbytes > pptab[ii].max) {
+        fbytes /= 1024;
+        ii++;
+    }
+
+    return QString("%1 %2")
+        .arg(fbytes, 0, 'f', pptab[ii].precision)
+        .arg(pptab[ii].suffix);
+}
+
 void JobQueue::DoTranscodeThread(void)
 {
     if (!m_pginfo)
@@ -1570,10 +1603,8 @@
     ProgramInfo *program_info = new ProgramInfo(*m_pginfo);
     int controlTranscoding = JOB_RUN;
     QString key;
-    QString logDesc = QString("\"%1\" recorded from channel %2 at %3")
-                          .arg(program_info->title.local8Bit())
-                          .arg(program_info->chanid)
-                          .arg(program_info->recstartts.toString());
+    QString subtitle = program_info->subtitle.isEmpty() ? "" :
+                        QString(" \"%1\"").arg(program_info->subtitle);
     QString startts = program_info->recstartts.toString("yyyyMMddhhmmss");
     
     key = QString("%1_%2")
@@ -1637,20 +1668,33 @@
     int retrylimit = 3;
     while (retry)
     {
-        QString statusText;
+        off_t origfilesize, filesize;
+        struct stat st;
 
         retry = false;
         ChangeJobStatus(jobID, JOB_STARTING);
 
-        statusText = StatusText(GetJobStatus(jobID));
-        msg = QString("\"%1\" transcode of %2: %3.")
-                      .arg(transcoderName)
-                      .arg(logDesc)
-                      .arg(statusText);
-        VERBOSE(VB_GENERAL, msg);
-        gContext->LogEntry("transcode", LP_NOTICE,
-                           QString("Transcode %1").arg(statusText), msg);
+        QString statusText = StatusText(GetJobStatus(jobID));
+        QString fileprefix = gContext->GetFilePrefix();
+        QString filename = program_info->GetRecordFilename(fileprefix);
 
+        origfilesize = 0;
+        filesize = 0;
+
+        if (stat(filename.ascii(), &st) == 0)
+            origfilesize = st.st_size;
+
+        QString msg = QString("Transcode %1").arg(statusText);
+
+        QString details = QString("%1%2: %3 (%4)")
+                            .arg(program_info->title)
+                            .arg(subtitle)
+                            .arg(PrettyPrint(origfilesize))
+                            .arg(transcoderName);
+
+        VERBOSE(VB_GENERAL, QString("%1 for %2").arg(msg).arg(details));
+        gContext->LogEntry("transcode", LP_NOTICE, msg, details);
+
         VERBOSE(VB_JOBQUEUE, QString("JobQueue running app: '%1'")
                                      .arg(command));
 
@@ -1658,8 +1702,6 @@
 
         int status = GetJobStatus(jobID);
 
-        QString fileprefix = gContext->GetFilePrefix();
-        QString filename = program_info->GetRecordFilename(fileprefix);
         if (status == JOB_STOPPING)
         {
             QString tmpfile = filename;
@@ -1669,7 +1711,7 @@
             struct stat st;
             long long filesize = 0;
             if (stat(tmpfile.ascii(), &st) == 0)
-            filesize = st.st_size;
+                filesize = st.st_size;
             // To save the original file...
             QString oldfile = filename;
             oldfile += ".old";
@@ -1709,7 +1751,11 @@
             }
             if (filesize > 0)
                 program_info->SetFilesize(filesize);
-            ChangeJobStatus(jobID, JOB_FINISHED);
+            QString comment = QString("%1: %2 => %3")
+                                    .arg(transcoderName)
+                                    .arg(PrettyPrint(origfilesize))
+                                    .arg(PrettyPrint(filesize));
+            ChangeJobStatus(jobID, JOB_FINISHED, comment);
         } else {
             // transcode didn't finish delete partial transcode
             filename += ".tmp";
@@ -1723,17 +1769,34 @@
             {
                 retry = true;
                 retrylimit--;
-            } else // Unrecoerable error
+            } else // Unrecoverable error
                 ChangeJobStatus(jobID, JOB_ERRORED);
         }
         statusText = StatusText(GetJobStatus(jobID));
-        msg = QString("\"%1\" transcode of %2: %3.")
-                      .arg(transcoderName)
-                      .arg(logDesc)
-                      .arg(statusText);
-        VERBOSE(VB_GENERAL, msg);
-        gContext->LogEntry("transcode", LP_NOTICE,
-                           QString("Transcode %1").arg(statusText), msg);
+
+        msg = QString("Transcode %1").arg(statusText);
+
+        if (filesize > 0)
+        {
+            details = QString("%1%2: %3 (%4)")
+                            .arg(program_info->title)
+                            .arg(subtitle)
+                            .arg(PrettyPrint(filesize))
+                            .arg(transcoderName);
+        }
+        else
+        {
+            details = QString("%1%2").arg(program_info->title).arg(subtitle);
+        }
+
+        VERBOSE(VB_GENERAL, QString("%1 for %2%3: %4 => %5 (%6)")
+                            .arg(msg)
+                            .arg(program_info->title)
+                            .arg(subtitle)
+                            .arg(PrettyPrint(origfilesize))
+                            .arg(PrettyPrint(filesize))
+                            .arg(transcoderName));
+        gContext->LogEntry("transcode", LP_NOTICE, msg, details);
     }
     controlFlagsLock.lock();
     runningJobIDs.erase(key);
@@ -1759,8 +1822,11 @@
     ProgramInfo *program_info = new ProgramInfo(*m_pginfo);
     int controlFlagging = JOB_RUN;
     QString key;
-    QString logDesc = QString("\"%1\" recorded from channel %2 at %3")
+    QString subtitle = program_info->subtitle.isEmpty() ? "" :
+                        QString(" \"%1\"").arg(program_info->subtitle);
+    QString logDesc = QString("%1%2: channel %3, %4")
                           .arg(program_info->title.local8Bit())
+                          .arg(subtitle)
                           .arg(program_info->chanid)
                           .arg(program_info->recstartts.toString());
     
@@ -1793,11 +1859,9 @@
     jobControlFlags[key] = &controlFlagging;
     controlFlagsLock.unlock();
 
-    QString msg = QString("Starting Commercial Flagging for %1.")
-                          .arg(logDesc);
-    VERBOSE(VB_GENERAL, msg);
-    gContext->LogEntry("commflag", LP_NOTICE, "Commercial Flagging Starting",
-                       msg);
+    QString msg = "Commercial Flagging Starting";
+    VERBOSE(VB_GENERAL, QString("%1 for %2").arg(msg).arg(logDesc));
+    gContext->LogEntry("commflag", LP_NOTICE, msg, logDesc);
 
     int breaksFound = 0;
     QString cmd =
@@ -1863,14 +1927,14 @@
     }
     else
     {
-        msg = QString("Finished Commercial Flagging for %1. "
-                      "Found %2 commercial break(s).")
-                      .arg(logDesc)
-                      .arg(breaksFound);
+        msg = "Commercial Flagging Finished";
 
-        gContext->LogEntry("commflag", LP_NOTICE,
-                           "Commercial Flagging Finished", msg);
+        QString details = QString("%1: %2 commercial break(s)")
+                                .arg(logDesc)
+                                .arg(breaksFound);
 
+        gContext->LogEntry("commflag", LP_NOTICE, msg, details);
+
         msg = QString("Finished, %1 break(s) found.").arg(breaksFound);
         ChangeJobStatus(jobID, JOB_FINISHED, msg);
     }
Index: libs/libmythtv/scheduledrecording.cpp
===================================================================
--- libs/libmythtv/scheduledrecording.cpp	(revision 7255)
+++ libs/libmythtv/scheduledrecording.cpp	(working copy)
@@ -453,15 +453,16 @@
 {
     proginfo.recstatus = rsRecorded;
 
-    QString msg;
-  
-    msg = QString("Finished recording %1 on channel: %2")
-                  .arg(proginfo.title)
-                  .arg(proginfo.chanid);
+    QString msg = "Finished recording";
+    QString subtitle = proginfo.subtitle.isEmpty() ? "" :
+                                    QString(" \"%1\"").arg(proginfo.subtitle);
+    QString details = QString("%1%2: channel %3")
+                                    .arg(proginfo.title)
+                                    .arg(subtitle)
+                                    .arg(proginfo.chanid);
 
-    VERBOSE(VB_GENERAL, msg.local8Bit());
-    gContext->LogEntry("scheduler", LP_NOTICE, "Finished recording", 
-                       msg);
+    VERBOSE(VB_GENERAL, QString("%1 %2").arg(msg).arg(details).local8Bit());
+    gContext->LogEntry("scheduler", LP_NOTICE, msg, details);
 
     MythEvent me(QString("UPDATE_RECORDING_STATUS %1 %2 %3 %4")
                  .arg(proginfo.cardid)
Index: programs/mythbackend/scheduler.cpp
===================================================================
--- programs/mythbackend/scheduler.cpp	(revision 7255)
+++ programs/mythbackend/scheduler.cpp	(working copy)
@@ -1109,7 +1109,7 @@
         RecIter recIter = startIter;
         for ( ; recIter != reclist.end(); recIter++)
         {
-            QString msg;
+            QString msg, details;
 
             nextRecording = *recIter;
 
@@ -1224,14 +1224,19 @@
                 msg = "Canceled recording"; 
             statuschanged = true;
 
-            msg += QString(" \"%1\" on channel: %2 on cardid: %3, "
-                           "sourceid %4").arg(nextRecording->title)
+            QString subtitle = nextRecording->subtitle.isEmpty() ? "" :
+                QString(" \"%1\"").arg(nextRecording->subtitle);
+
+            details = QString("%1%2: "
+                "channel %3 on cardid %4, sourceid %5")
+                .arg(nextRecording->title)
+                .arg(subtitle)
                 .arg(nextRecording->chanid)
                 .arg(nextRecording->cardid)
                 .arg(nextRecording->sourceid);
-            VERBOSE(VB_GENERAL, msg.local8Bit());
-            gContext->LogEntry("scheduler", LP_NOTICE, "Schedule Change", 
-                               msg);
+            VERBOSE(VB_GENERAL,
+                QString("%1 %2").arg(msg).arg(details).local8Bit());
+            gContext->LogEntry("scheduler", LP_NOTICE, msg, details);
         }
 
         if (statuschanged)
@@ -2254,3 +2259,4 @@
     }
 }
 
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
