If anyone wants to take a look at it, I've been working on a script to do this. It works well except if you have a lot of really large log files and you search all of them instead of limiting the search by date/channel/etc.

Code:
menu Channel,Status,Query {
  Search Logs:dialog -m LogSearch LogSearch
}

Dialog LogSearch {
  title "Log Search"
  size -1 -1 300 70
  option dbu

  text "Path\filename to search (wildcards accepted):",1,5 5 110 10
  edit "",2,115 4 170 10, autohs
  button "...",3,287 4 10 10

  text "Search log file(s) for (wildcards accepted):",4,5 20 110 10
  edit "",5,115 19 170 10, autohs

  button "Search",6,5 35 25 10

  text "NOTE: This is a long warning.  The full warning is in my post.",7,45 35 250 40
}

on *:dialog:logsearch:init:0: {
  did -ra $dname 2 $gettok($mklogfn($active),1- -2,92) $+ \
}

on *:dialog:logsearch:sclick:*: {
  if ($did == 3) { did -ra $dname 2 $sdir($gettok($mklogfn($active),1- -2,92) $+ \) }
  if ($did == 6) {
    var %path = $iif($right($did($dname,2),1) == \,$did($dname,2),$gettok($did($dname,2),1- -2,92))
    var %file = $iif($right($did($dname,2),1) == \,*,$gettok($did($dname,2),-1,92))
    set %i.search $did($dname,5)
    if (!$window(@LogSearch)) { window -knz @LogSearch }
    clear @LogSearch
    aline @LogSearch Search Results for * $+ %i.search $+ * :
    noop $findfile(%path,%file,0,1,ilogsearch $1-)
  }
}

alias ilogsearch {
  if ($fopen(ilogsearch)) { .fclose ilogsearch }
  .fopen ilogsearch $qt($1-)
  .fseek -w ilogsearch * $+ %i.search $+ * 
  var %isearch = $fread(ilogsearch)
  while (%isearch) {
    echo @LogSearch 04 $+ $gettok($1-,-1,92) $+ : %isearch
    .fseek -w ilogsearch * $+ %i.search $+ * 
    var %isearch = $fread(ilogsearch)
  }
  .fclose ilogsearch
}


I am, of course, open to suggestions to improve it (especially speed with larger log files). And, yes, output formatting can be changed. I just set this formatting up because it was quick and easy. I plan to use a nicer output format later.

Example paths:
c:\mirc\#channel.*.2010*.log
c:\mirc\#channel.network.20100813.log
c:\mirc\#channel.*.log
c:\mirc\*.log

Example searches:
hello
how are you
hello*you

Notes:
Log filenames can be different based on your settings. What is shown above is just one format used as an example. Wildcards work in all formats.

Searches are done as *search item/phrase* (it puts wildcards at the beginning and end). You can include them yourself, but it isn't necessary. It will search for whole phrases or split words/phrases (like in the last example).


Warning message in the dialog box reads:
Searching for a common word/phrase may 'freeze' mIRC until finished. This may disconnect you. This is especially true if you have a lot of log files or very large log files. Try searching only specific files or use wildcards in the path\filename to limit the search. Example (if your log filenames include the date and network): c:\mirc\logs\#channel.*.2010*.log

I left it out of the code blocks so it doesn't put a long horizontal scrollbar. If you want, you can put it back into the script.