Suppressing APC cache warning messages in watchdog log
You can create a module to use the hook_watchdog function. This hook would kick in when there is an error so you can check the type of error decide not to write it to the table. But the variable seems to be passed not as a reference and hence I dont think you would be able to change the variable it self. 

The logs are written to the table by the dblog module. using the hook implementation of the dblog module. Just make sure that your function gets called after this so that the entry is already in the db. this should be the case already if not you can set the priority in the systems table to make this effect. 

Now within your hook function you can decide to delete the entry that is just written. 

function dblog_watchdog(array $log_entry) {
  Database::getConnection('default', 'default')-&gt;insert('watchdog')
    -&gt;fields(array(
    'uid' =&gt; $log_entry['uid'], 
    'type' =&gt; substr($log_entry['type'], 0, 64), 
    'message' =&gt; $log_entry['message'], 
    'variables' =&gt; serialize($log_entry['variables']), 
    'severity' =&gt; $log_entry['severity'], 
    'link' =&gt; substr($log_entry['link'], 0, 255), 
    'location' =&gt; $log_entry['request_uri'], 
    'referer' =&gt; $log_entry['referer'], 
    'hostname' =&gt; substr($log_entry['ip'], 0, 128), 
    'timestamp' =&gt; $log_entry['timestamp'],
  ))
    -&gt;execute();
}


Another option would to create a hook_cron in your module and delete the wantchdog entries you dont want during the cron run.